如何判断一棵二叉树是否是平衡二叉树<转载>
2010-03-23 00:48
302 查看
平衡二叉树,又称AVL树。它或者是一棵空树,或者是具有下列性质的二叉树:它的左子树和右子树都是平衡二叉树,且左子树和右子树的高度之差之差的绝对值不超过1.。
问题:判断一个二叉排序树是否是平衡二叉树这里是二叉排序树的定义解决方案:根据平衡二叉树的定义,如果任意节点的左右子树的深度相差不超过1,那这棵树就是平衡二叉树。首先编写一个计算二叉树深度的函数,利用递归实现。
ref:http://www.zhuxinquan.com/cn/2006/03/post_3.html
问题:判断一个二叉排序树是否是平衡二叉树这里是二叉排序树的定义解决方案:根据平衡二叉树的定义,如果任意节点的左右子树的深度相差不超过1,那这棵树就是平衡二叉树。首先编写一个计算二叉树深度的函数,利用递归实现。
template<typename T> static int Depth(BSTreeNode<T>* pbs) { if (pbs==NULL) return 0; else { int ld = Depth(pbs->left); int rd = Depth(pbs->right); return 1 + (ld >rd ? ld : rd); } }下面是利用递归判断左右子树的深度是否相差1来判断是否是平衡二叉树的函数:
template<typename T> static bool isBalance(BSTreeNode<T>* pbs) { if (pbs==NULL) return true; int dis = Depth(pbs->left) - Depth(pbs->right); if (dis>1 || dis<-1 ) return false; else return isBalance(pbs->left) && isBalance(pbs->right); }
ref:http://www.zhuxinquan.com/cn/2006/03/post_3.html
相关文章推荐
- .如何判断一棵二叉树是否是平衡二叉树
- 数据结构之如何判断一棵二叉树是否是平衡二叉树(AVL树)
- 如何判断一棵二叉树是否是平衡二叉树(AVL)
- 如何只遍历一次判断一棵二叉树是否为平衡二叉树
- 输入一棵二叉树,判断该二叉树是否是平衡二叉树
- 输入一棵二叉树,判断该二叉树是否是平衡二叉树。
- 判断一棵二叉树是否为平衡二叉树(待续!!!!)
- 【二叉树】判断一棵二叉树是否是平衡二叉树/求一棵二叉树的镜像/对称的二叉树
- 每日一题之判断一棵二叉树是否是平衡二叉树以及求一颗二叉树的镜像
- 输入一棵二叉树,判断该二叉树是否是平衡二叉树
- 【二叉树】判断一棵二叉树是否是平衡二叉树
- 编程实现判断一棵二叉树是否是平衡二叉树
- 数据结构面试题/判断一棵二叉树是否是平衡二叉树
- 输入一棵二叉树,判断该二叉树是否是平衡二叉树。
- day12之判断一棵二叉树是否是平衡二叉树+求一颗二叉树的镜像+判断一个数在二维数组中是否存在
- JS如何判断包括IE11在内的IE浏览器 <转载>
- 输入一棵二叉树,判断该二叉树是否是平衡二叉树。
- [互联网面试笔试汇总C/C++-16] 判断一棵二叉树是否是平衡二叉树
- 输入一棵二叉树,判断该二叉树是否是平衡二叉树。
- 输入一棵二叉树,判断该二叉树是否是平衡二叉树。