判断一棵二叉树是否为AVL树
生活随笔
收集整理的這篇文章主要介紹了
判断一棵二叉树是否为AVL树
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
思路:AVL樹是高度平衡的二叉搜索樹,這里為了清晰說明,分別判斷是否為搜索樹,是否為平衡樹。
struct TreeNode {struct TreeNode *left;struct TreeNode *right;int key; }; //這里先判斷是否為二叉搜索樹,其次判斷是否為平衡的 bool IsAVL(TreeNode *root,int depth) {if (isBST(root)&&isBalance(root,&depth))return true;return false; }//判斷是否為二叉搜索樹 bool isBST(TreeNode *root) {if(root == NULL)return true;if (!isBST(root->left))return false;if (!isBST(root->right))return false;TreeNode *cur = root->left;if (cur != NULL){while(cur->right!=NULL)cur = cur->right;if(root->key < cur->key)return false;}TreeNode *cur = root->right;if (cur != NULL){while(cur->left!=NULL)cur = cur->left;if(root->key > cur->key)return false;}return true; }//判斷是否平衡 bool isBalance(TreeNode *root,int *depth) {if (root == NULL){*depth = 0;return true;}int depthl,depthr;if(!isBalance(root->left,&depthl))return false;if(!isBalance(root->right,&depthr))return false;int diff = depthl - depthr;if(diff > 1 || diff < -1)return false;*depth = 1+(depthl>depthr?depthl:depthr);return true; }?
本文轉自NewPanderKing51CTO博客,原文鏈接:http://www.cnblogs.com/newpanderking/p/3969557.html?,如需轉載請自行聯系原作者
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的判断一棵二叉树是否为AVL树的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自动化部署shell01
- 下一篇: 苹果MAC OS X怎么安装双系统?