平衡二叉树

给定一个二叉树,判断它是否是高度平衡的二叉树。

本题中,一棵高度平衡二叉树定义为:

一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。

示例 1:

给定二叉树 [3,9,20,null,null,15,7]

3
/ \
9 20
/ \
15 7
返回 true 。

示例 2:

给定二叉树 [1,2,2,3,3,null,null,4,4]

1
/ \
2 2
/ \
3 3
/ \
4 4
返回 false 。

 

解:这道题思路是用左右子树的最大深度求解,但如果只求根下的左右子树的深度的话效率太慢,此解法在发现任一子树高度不平衡的情况下即返回

 1 /**
 2  * Definition for a binary tree node.
 3  * struct TreeNode {
 4  *     int val;
 5  *     TreeNode *left;
 6  *     TreeNode *right;
 7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 8  * };
 9  */
10 class Solution {
11 public:
12     bool isBalanced(TreeNode* root) {
13         return findDeep(root)!=-1;
14     }
15     
16     int findDeep(TreeNode* root)
17     {
18         int i_deepL=0,i_deepR=0;
19         if(root==nullptr)
20         {
21             return 0;
22         }
23         i_deepL+=findDeep(root->left);
24         i_deepR+=findDeep(root->right);
25         if(i_deepL==-1||i_deepR==-1)
26         {
27             return -1;
28         }
29         if(i_deepL-i_deepR>1||i_deepR-i_deepL>1)
30         {
31             return -1;
32         }
33         return max(i_deepL,i_deepR)+1;          //加上本层的高度
34     }
35 };

 

原文链接: https://www.cnblogs.com/wangshaowei/p/11363829.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    平衡二叉树

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/391461

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月31日 上午10:37
下一篇 2023年3月31日 上午10:37

相关推荐