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

剑指offer——61平衡二叉树

时间:2019-10-20 12:59:50      阅读:75      评论:0      收藏:0      [点我收藏+]

标签:div   content   roo   class   get   多次   evel   sub   return   

题目描述

输入一棵二叉树,判断该二叉树是否是平衡二叉树。
 
题解:
  方法一:使用深度遍历,判断每个节点是不是平衡二叉树,这种从上至下的方法会导致底层的节点重复判断多次
  方法二:使用后序遍历判断,这种方法为自下而上,每个节点只需要判断一次即可
 
  
 1 //方法一:使用深度遍历,判断每个节点是不是平衡二叉树,这种从上至下的方法会导致底层的节点重复判断多次
 2 class Solution01 {
 3 public:
 4     bool IsBalanced_Solution(TreeNode* pRoot) {
 5         if (pRoot == nullptr)return true;
 6         int left = getHeight(pRoot->left);
 7         int right = getHeight(pRoot->right);
 8         if (abs(left - right) > 1)return false;
 9         return IsBalanced_Solution(pRoot->left) && IsBalanced_Solution(pRoot->right);
10     }
11 private:
12     int getHeight(TreeNode *pRoot)
13     {
14         if (pRoot == nullptr)return 1;
15         int left = getHeight(pRoot->left);
16         int right = getHeight(pRoot->right);
17         return max(left, right) + 1;
18     }
19 };
20 
21 //方法二:使用后序遍历判断,这种方法为自下而上,每个节点只需要判断一次即可
22 class Solution02 {
23 public:
24     bool IsBalanced_Solution(TreeNode* pRoot) {
25         if (pRoot == nullptr)return true;
26         int level = 0;
27         return IsBalanced_Solution(pRoot, level);
28     }
29 private:
30     bool IsBalanced_Solution(TreeNode* pRoot, int &level)
31     {
32         if (pRoot == nullptr)
33         {
34             level = 0;
35             return true;
36         }
37         //按照后序遍历去判断左右子树,然后以当前节点为根树的深度
38         int left = 0, right = 0;
39         if (IsBalanced_Solution(pRoot->left, left) && IsBalanced_Solution(pRoot->right, right))
40         {
41             if (abs(left - right) <= 1)
42             {
43                 level = max(left, right) + 1;
44                 return true;
45             }
46         }
47         return false;
48     }
49 };

 

剑指offer——61平衡二叉树

标签:div   content   roo   class   get   多次   evel   sub   return   

原文地址:https://www.cnblogs.com/zzw1024/p/11707121.html

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