当前位置: 首页 > news >正文

一个网站多个域名重定向怎么做西安高校网站建设

一个网站多个域名重定向怎么做,西安高校网站建设,东莞市土木建筑学会,WordPress没有必要缓存插件AVL 是一种自平衡二叉搜索树#xff0c;其中任何节点的左右子树的高度之差不能超过 1。 AVL树的特点#xff1a; 1、它遵循二叉搜索树的一般属性。 2、树的每个子树都是平衡的#xff0c;即左右子树的高度之差最多为1。 3、当插入新节点时#xff0c;树会自我平衡。因此…AVL 是一种自平衡二叉搜索树其中任何节点的左右子树的高度之差不能超过 1。 AVL树的特点 1、它遵循二叉搜索树的一般属性。 2、树的每个子树都是平衡的即左右子树的高度之差最多为1。 3、当插入新节点时树会自我平衡。因此插入操作非常耗时。 AVL Tree的应用 1、大多数内存中集和字典都使用 AVL 树进行存储。 2、数据库应用程序插入和删除不太常见但需要频繁的数据查找也经常使用 AVL 树。 3、除了数据库应用程序之外它还用于其他需要更好搜索的应用程序。 4、有序关联容器集合、多集、映射和多映射的大多数 STL 实现都使用红黑树而不是 AVL树。 #include stdio.h #include stdlib.hstruct AVLnode {int key;struct AVLnode *left;struct AVLnode *right;int height; }; typedef struct AVLnode avlNode;int max(int a, int b) { return (a b) ? a : b; }avlNode *newNode(int key) {avlNode *node (avlNode *)malloc(sizeof(avlNode));if (node NULL)printf(!! Out of Space !!\n);else{node-key key;node-left NULL;node-right NULL;node-height 0;}return node; }int nodeHeight(avlNode *node) {if (node NULL)return -1;elsereturn (node-height); }int heightDiff(avlNode *node) {if (node NULL)return 0;elsereturn (nodeHeight(node-left) - nodeHeight(node-right)); }/* 返回左子树中最小值的节点*/ avlNode *minNode(avlNode *node) {avlNode *temp node;while (temp-left ! NULL) temp temp-left;return temp; }void printAVL(avlNode *node, int level) {int i;if (node ! NULL){printAVL(node-right, level 1);printf(\n\n);for (i 0; i level; i) printf(\t);printf(%d, node-key);printAVL(node-left, level 1);} }avlNode *rightRotate(avlNode *z) {avlNode *y z-left;avlNode *T3 y-right;y-right z;z-left T3;z-height (max(nodeHeight(z-left), nodeHeight(z-right)) 1);y-height (max(nodeHeight(y-left), nodeHeight(y-right)) 1);return y; }avlNode *leftRotate(avlNode *z) {avlNode *y z-right;avlNode *T3 y-left;y-left z;z-right T3;z-height (max(nodeHeight(z-left), nodeHeight(z-right)) 1);y-height (max(nodeHeight(y-left), nodeHeight(y-right)) 1);return y; }avlNode *LeftRightRotate(avlNode *z) {z-left leftRotate(z-left);return (rightRotate(z)); }avlNode *RightLeftRotate(avlNode *z) {z-right rightRotate(z-right);return (leftRotate(z)); }avlNode *insert(avlNode *node, int key) {if (node NULL)return (newNode(key));/*二叉搜索树插入*/if (key node-key)node-left insert(node-left, key); /*递归插入左子树*/else if (key node-key)node-right insert(node-right, key); /*递归插入右子树*//*计算节点高度*/node-height (max(nodeHeight(node-left), nodeHeight(node-right)) 1);/*检查平衡性*/int balance heightDiff(node);/*左左*/if (balance 1 key (node-left-key))return rightRotate(node);/*右右*/if (balance -1 key (node-right-key))return leftRotate(node);/*左右*/if (balance 1 key (node-left-key)){node LeftRightRotate(node);}/*右左*/if (balance -1 key (node-right-key)){node RightLeftRotate(node);}return node; }avlNode *delete (avlNode *node, int queryNum) {if (node NULL)return node;if (queryNum node-key)node-left delete (node-left, queryNum); /*Recursive deletion in L subtree*/else if (queryNum node-key)node-right delete (node-right, queryNum); /*Recursive deletion in R subtree*/else{/*单节点或者没有子节点*/if ((node-left NULL) || (node-right NULL)){avlNode *temp node-left ? node-left : node-right;/*没有子节点*/if (temp NULL){temp node;node NULL;}else /*单节点*/*node *temp;free(temp);}else{/*两个孩子节点*//*获取右子树最小值的节点*/avlNode *temp minNode(node-right);node-key temp-key; /*拷贝到根节点*/node-right delete (node-right,temp-key); /*删除右子树最小值的节点*/}}/*单节点*/if (node NULL)return node;/*更新高度*/node-height (max(nodeHeight(node-left), nodeHeight(node-right)) 1);int balance heightDiff(node);/*左左*/if ((balance 1) (heightDiff(node-left) 0))return rightRotate(node);/*左右*/if ((balance 1) (heightDiff(node-left) 0)){node LeftRightRotate(node);}/*右右*/if ((balance -1) (heightDiff(node-right) 0))return leftRotate(node);/*右左*/if ((balance -1) (heightDiff(node-right) 0)){node RightLeftRotate(node);}return node; }avlNode *findNode(avlNode *node, int queryNum) {if (node ! NULL){if (queryNum node-key)node findNode(node-left, queryNum);else if (queryNum node-key)node findNode(node-right, queryNum);}return node; }void printPreOrder(avlNode *node) {if (node NULL)return;printf( %d , (node-key));printPreOrder(node-left);printPreOrder(node-right); }void printInOrder(avlNode *node) {if (node NULL)return;printInOrder(node-left);printf( %d , (node-key));printInOrder(node-right); }void printPostOrder(avlNode *node) {if (node NULL)return;printPostOrder(node-left);printPostOrder(node-right);printf( %d , (node-key)); }int main() {int choice;int flag 1;int insertNum;int queryNum;avlNode *root NULL;avlNode *tempNode;while (flag 1){printf(\n\nEnter the Step to Run : \n);printf(\t1: Insert a node into AVL tree\n);printf(\t2: Delete a node in AVL tree\n);printf(\t3: Search a node into AVL tree\n);printf(\t4: printPreOrder (Ro L R) Tree\n);printf(\t5: printInOrder (L Ro R) Tree\n);printf(\t6: printPostOrder (L R Ro) Tree\n);printf(\t7: printAVL Tree\n);printf(\t0: EXIT\n);scanf(%d, choice);switch (choice){case 0:{flag 0;printf(\n\t\tExiting, Thank You !!\n);break;}case 1:{printf(\n\tEnter the Number to insert: );scanf(%d, insertNum);tempNode findNode(root, insertNum);if (tempNode ! NULL)printf(\n\t %d Already exists in the tree\n, insertNum);else{printf(\n\tPrinting AVL Tree\n);printAVL(root, 1);printf(\n);root insert(root, insertNum);printf(\n\tPrinting AVL Tree\n);printAVL(root, 1);printf(\n);}break;}case 2:{printf(\n\tEnter the Number to Delete: );scanf(%d, queryNum);tempNode findNode(root, queryNum);if (tempNode NULL)printf(\n\t %d Does not exist in the tree\n, queryNum);else{printf(\n\tPrinting AVL Tree\n);printAVL(root, 1);printf(\n);root delete (root, queryNum);printf(\n\tPrinting AVL Tree\n);printAVL(root, 1);printf(\n);}break;}case 3:{printf(\n\tEnter the Number to Search: );scanf(%d, queryNum);tempNode findNode(root, queryNum);if (tempNode NULL)printf(\n\t %d : Not Found\n, queryNum);else{printf(\n\t %d : Found at height %d \n, queryNum,tempNode-height);printf(\n\tPrinting AVL Tree\n);printAVL(root, 1);printf(\n);}break;}case 4:{printf(\nPrinting Tree preOrder\n);printPreOrder(root);break;}case 5:{printf(\nPrinting Tree inOrder\n);printInOrder(root);break;}case 6:{printf(\nPrinting Tree PostOrder\n);printPostOrder(root);break;}case 7:{printf(\nPrinting AVL Tree\n);printAVL(root, 1);break;}default:{flag 0;printf(\n\t\tExiting, Thank You !!\n);break;}}}return 0; }
http://www.dnsts.com.cn/news/115067.html

相关文章:

  • 杭州网站案列工业设计公司属于什么行业
  • 网站制作与建设教程下载美发店网站源码
  • 做网站跳转怎么收费浙江创都建设有限公司网站
  • 中国建设人才服务信息网是正规网站广西桂林
  • 什么行业做网站搜索番禺网站开发公司
  • 企业网站小程序源码福田庆三案例照
  • 深圳网站制作880传媒公司商业计划书
  • 如何上传模板到网站视频链接生成网站
  • 珠海华兴建设工程有限公司网站会员管理系统软件哪个好
  • vs简易新闻建设网站找代加工产品哪个网
  • 中国临沂网站优化西安的商城网站设计
  • 网站开发需要什么专业广告投放系统源码
  • 网站建设制作方法wordpress
  • 郑州seo网站有优化住房和城乡建设部网站监理工程师
  • 服务器网站建设流程网页设计与制作专业介绍
  • 外贸企业公司网站建设用户体验 网站 外国
  • 怎么做批量的网站检查app软件定制开发平台
  • 晚上网站推广软件免费版网站彩票代理怎么做
  • 网站的提交重置按钮怎么做wordpress站点地址灰显
  • 做网站不搭建本地环境电子商务平台建设内容有哪些
  • 驻马店网站建设服务器iis搭建网站
  • 广州网站建设技术托管温州建设局网站
  • 遵义网站设计最好看免费观看高清大全知否知否
  • 一家专门做爆品印刷的网站请选择一个网站制作软件
  • 贵州省住房和建设厅网网站阿里云域名注册入口官网
  • 个人租车网站源码个人业务网站后台
  • 厦门公司注册网址seo根据什么具体优化
  • 网站建设模板之家免费下载wordpress 悬浮播放器
  • wordpress新站注意事项优化seo教程技术
  • 微网站站点名称做网站视频背景