判断一个二叉树是否是平衡二叉树 Cracking the coding interview 4.1
2013-01-15 17:25
507 查看
平衡二叉树的定义是:任意节点的左子树的高度和右子树的高度之差小于等于1.
那么一个二叉树是平衡二叉树 当且仅当 (1,左子树是平衡二叉树, 2. 右子树是平衡二叉树; 3, 左右子树的高度之差小于等于1).
所以用递归的方法判断的话,递归函数就需要返回两个信息:是否平衡,树高度. 代码如下。
那么一个二叉树是平衡二叉树 当且仅当 (1,左子树是平衡二叉树, 2. 右子树是平衡二叉树; 3, 左右子树的高度之差小于等于1).
所以用递归的方法判断的话,递归函数就需要返回两个信息:是否平衡,树高度. 代码如下。
bool IsBalance(Node *pRoot, int & nDeepth) { if (pRoot == NULL) { nDeepth = 0; return true; } int deepRight; int deepLeft; if (!IsBalance(pRoot->pRight, deepRight) || !IsBalance(pRoot->pLeft, deepLeft)) return false; nDeepth = 1 + fmax(deepRight, deepLeft); return abs(deepRight - deepLeft)<=1; }
相关文章推荐
- Cracking coding interview(1.1)给定String判断是否unique
- 判断一个二叉树是否是平衡二叉树(AVL)
- Cracking The Coding Interview 4.1
- Cracking coding interview(4.3)给定一个排好序的数组创建最小高度的二叉树
- 判断一个二叉树是否是平衡二叉树
- 判断一个二叉树是否是平衡二叉树
- Cracking coding interview(4.1)二叉树平衡问题
- day12之判断一棵二叉树是否是平衡二叉树+求一颗二叉树的镜像+判断一个数在二维数组中是否存在
- Cracking the coding interview--Q4.1
- Cracking the coding interview--Q4.1
- LeetCode(Balanced Binary Tree ) 判断一个二叉树是否为平衡二叉树
- 如何判断一个二叉树是否为平衡二叉树。
- 判断一个二叉树是否是平衡二叉树
- 《Cracking the Coding Interview 》之 二叉树的创建 与 遍历(非递归+递归version)
- Cracking coding interview(4.2)有向图判断任意2点之间是否有一条有向路径
- Cracking The Coding Interview 4.0_二叉树
- Java 判断一个序列是否是搜索二叉树的后序遍历结果
- 判断一棵二叉树是否是平衡二叉树/求一颗二叉树的镜像
- 《Cracking the Coding Interview》——第11章:排序和搜索——题目7
- Cracking the coding interview--Q8.2