平衡二叉树

Posted hellosnow

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了平衡二叉树相关的知识,希望对你有一定的参考价值。

题目:输入一棵二叉树,判断该二叉树是否是平衡二叉树。

 

这道题比较考验思维。平衡二叉树的条件是左、右子树的深度差不大于1,所以我们首先需要计算出二叉树的深度。而这道题需要返回的并不是深度,而是一个布尔值,因此我们初始认为这棵树是平衡的,在计算深度的过程中,如果发现左、右子树的深度大于1了,就将答案置为false。

计算深度我们应该另开一个函数进行递归操作,一棵树的深度是它的左子树和右子树这两者中最大的子树深度+1。递归计算左子树的深度和右子树的深度,返回的是整棵树的深度,在计算左、右子树深度的过程中,如果发现深度差大于1,就将答案置为false。

 

c++代码如下:

 1 class Solution {
 2 public:
 3     bool ans = true;
 4     bool IsBalanced_Solution(TreeNode* pRoot) {
 5         dfs(pRoot);
 6         return ans;
 7     }
 8     
 9     int dfs(TreeNode* pRoot){
10         if(!pRoot) return 0;
11         int left = dfs(pRoot->left);
12         int right = dfs(pRoot->right);
13         if(abs(left - right) > 1) ans = false;
14         return max(left, right) + 1;
15     }
16 };

 

以上是关于平衡二叉树的主要内容,如果未能解决你的问题,请参考以下文章

求数据结构算法平衡二叉树实现代码

平衡二叉树详解——PHP代码实现

PHP代码实现平衡二叉树详解

判断一颗二叉树是否为二叉平衡树 python 代码

树--07---二叉树--04--平衡二叉树(AVL树)

平衡二叉树的定义及基本操作(查找插入删除)及代码实现