[Leetcode]110. Balanced Binary Tree

Given a binary tree, determine if it is height-balanced.

For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.

 

思路:求每个节点左右子树的高度,如果  H左树 - H 右树大于 1 或者 H 右树 - H 左树大于 1 ,就返回false ,为此,我另写了个求高度的辅助函数。这么做

我觉得效率有点低。。。但是第一反应就想到的这个。回头看看网上别的大神有没更高效的方法。。

 1 /**
 2  * Definition for a binary tree node.
 3  * public class TreeNode {
 4  *     int val;
 5  *     TreeNode left;
 6  *     TreeNode right;
 7  *     TreeNode(int x) { val = x; }
 8  * }
 9  */
10 class Solution {
11     public boolean isBalanced(TreeNode root) {
12         int lHeight,rHeight;
13         if (root==null)
14             return true;                    //如果一开始传进来一个空引用,则返回true
15         else{
16             lHeight = getHeight(root.left);        //求左树高和右树高
17             rHeight = getHeight(root.right);
18             if (lHeight-rHeight>1||rHeight-lHeight>1)
19                 return false;                              //不满足平衡条件,返回false;
20             else{
21                 //满足的话,递归判断左右孩子是否满足条件。左右孩子也可能不满足条件
22                 //,所以要递归判断。想象下人字形树。
23                 return isBalanced(root.left)&&isBalanced(root.right);
24             }
25         }
26     }
27     public int getHeight(TreeNode root){
28         int lHeight=0,rHeight=0;
29         if (root==null)
30             return 0;
31         else {
32             lHeight = getHeight(root.left);
33             rHeight = getHeight(root.right);
34         }
35         if (lHeight<rHeight)
36             lHeight = rHeight;
37         return lHeight+1;
38     }
39 }

 

转载于:https://www.cnblogs.com/David-Lin/p/7716354.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值