码迷,mamicode.com
首页 > 其他好文 > 详细

平衡二叉树

时间:2019-12-23 13:12:29      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:return   函数   balance   public   abs   答案   strong   int   str   

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

 

这道题比较考验思维。平衡二叉树的条件是左、右子树的深度差不大于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 };

 

平衡二叉树

标签:return   函数   balance   public   abs   答案   strong   int   str   

原文地址:https://www.cnblogs.com/hellosnow/p/12082932.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!