LeetCode OJ:Balanced Binary Tree(平衡二叉树)

LeetCode OJ: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.

就是去查看一棵树是不是平衡的,一开始对平衡二叉树的理解有错误,所以写错了 ,看了别人的解答之后更正过来了:

 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         int dep;
14         checkBalance(root, dep);
15     }
16     bool checkBalance(TreeNode * root, int &dep)
17     {
18         if(root == NULL){
19             dep = 0;
20             return true;
21         }
22         int leftDep, rightDep;
23         bool isLeftBal = checkBalance(root->left, leftDep);
24         bool isRightBal = checkBalance(root->right, rightDep);
25 
26         dep = max(leftDep, rightDep) + 1;
27         return isLeftBal && isRightBal && (abs(leftDep - rightDep) <= 1);
28     }
29 };

pS:感觉这个不应该easy的题目啊  想的时候头还挺疼的。。

用java的时候用上面的方法去做总是无法成功,所以换了一种方法,这个一开始没有想到,是看别人写的,代码如下所示:

 1 /**
 2  * Definition for binary tree
 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 public class Solution {
11     public boolean isBalanced(TreeNode root) {
12         if(root == null)
13             return true; 
14         if(root.left == null && root.right == null)
15             return true;
16         if(Math.abs(getDep(root.left) - getDep(root.right)) > 1)
17             return false;
18         return isBalanced(root.left) && isBalanced(root.right);
19     }
20     
21     
22     public int getDep(TreeNode node){
23         if(node == null)
24             return 0;
25         else
26             return 1 + Math.max(getDep(node.left), getDep(node.right));
27     }
28 }

 

转载于:https://www.cnblogs.com/-wang-cheng/p/4891070.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109291.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux_c之ioctl的FIONREAD参数

    linux_c之ioctl的FIONREAD参数ioctl是用来设置硬件控制寄存器,或者读取硬件状态寄存器的数值之类的。而read,write是把数据丢入缓冲区,硬件的驱动从缓冲区读取数据一个个发送或者把接收的数据送入缓冲区。FIONREAD就是返回缓冲区中有多少字节;ioctl(keyFd,FIONREAD,&b)得到缓冲区里有多少字节要被读取,然后将字节数放入b里面。接下来就可以用read了,read(keyFd,

    2022年7月23日
    19
  • 161套javaWeb项目源码免费分享[通俗易懂]

    161套javaWeb项目源码免费分享[通俗易懂]最近很多学生在找关于java开发的学生管理系统,学生选课系统,车辆管理系统,商城系统,项目申报系统,教务管理系统,班级管理系统,博客系统。。。。。。。。我找了一些前几年的项目,感觉还行,虽然项目但技术都是一样的,可以用来做课程设计和毕业设计项目参考,但不要完全照搬哦就不再展示了,需要的可以收藏本篇文章,最好可以四连,关注点赞收藏订阅,下载不迷路链接:https://pan.baidu.com/s/1JX3u5v1alDcMpbG8s134AA提取码:wimo…

    2022年7月9日
    85
  • 集成学习-stacking算法

    众所周知,集成学习算法,它将多个弱分类器集成起来,以达到较高的分类准确率。常见的集成学习方法:boosting bagging stacking今天主要讲stacking.Stacking的基本思想将个体学习器结合在一起的时候使用的方法叫做结合策略。对于分类问题,我们可以使用投票法来选择输出最多的类。对于回归问题,我们可以将分类器输出的结果求平均值。…

    2022年4月16日
    67
  • 为什么有MAC地址还要IP_IP与MAC映射表

    为什么有MAC地址还要IP_IP与MAC映射表publicvoidnetmac(){//获取IP和MAC地      objectnetmac;      stringst=””;      ManagementObjectSearcherWmi=newManagementObjectSearcher(“SELECT*FROMWin32_NetworkAdapt

    2022年9月1日
    4
  • 计算机网络——子网划分(内含习题讲解)

    计算机网络——子网划分(内含习题讲解)PS:(习题是由b站–计算机网络-谢希仁第7版-河南科技大学视频中获得)前情提要:我们在这之前已经学过了两级的IP地址:但是两级的IP地址有很多弊端,所以我们将要学习三级IP地址,也就是两级IP地址的升级版那我们要注意什么呢?一:我怎么去知道人家用的是两级IP还是三级IP呢?答:利用子网掩码;二:那什么是子网掩码呢?…

    2022年4月19日
    36
  • 2021年美赛A题翻译

    2021年美赛A题翻译美赛A题:真菌欢迎使用Markdown编辑器2021年美赛交流qq群:523820707需要电子版的可以关注关注公众号“1024遇见ta”:回复”A题”需要“美赛历年真题和特等奖论文集”的关注公众号“1024遇见ta”,回复“美赛”即可获得资源包,有条件的支持一下哈!欢迎使用Markdown编辑器2021年美赛交流qq群:523820707需要电子版的可以关注关注公众号“1024遇见ta”:回复“A题”需要“美赛历年真题和特等奖论文集”的关注公众号“1024遇见ta”,回复“美

    2022年5月4日
    65

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号