前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >平衡二叉树

平衡二叉树

作者头像
一份执着✘
发布2018-06-04 16:56:36
6900
发布2018-06-04 16:56:36
举报
文章被收录于专栏:赵俊的Java专栏赵俊的Java专栏

题意

给定一个二叉树,确定它是高度平衡的。对于这个问题,一棵高度平衡的二叉树的定义是:一棵二叉树中每个节点的两个子树的深度相差不会超过 1。

样例

代码语言:javascript
复制
A)  3            B)    3 
   / \                  \
  9  20                 20
    /  \                / \
   15   7              15  7

二叉树 A 是高度平衡的二叉树,但是 B 不是。

思路

这道题利用了 二叉树的最大深度 这个问题,就是求每一个左右节点的深度,如果两个深度之间的差大于 1,则说明该树不是一个平衡二叉树,该算法只会将所有元素遍历一次。

代码实现

代码语言:javascript
复制
public boolean IsBalanced_Solution(TreeNode root) {
    return Height(root) != -1;
}

public int Height(TreeNode node) {
    if (node == null) {
        return 0;
    }
    int leftDepth = Height(node.left);
    if (leftDepth == -1) {
        return -1;
    }
    
    int rightDepth = Height(node.right);
    if (rightDepth == -1) {
        return -1;
    }
    
    if (Math.abs(leftDepth - rightDepth) > 1) {
        return -1;
    }
    
    return Math.max(leftDepth, rightDepth) + 1;
}

原题地址

牛客网:平衡二叉树

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-08-262,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题意
  • 样例
  • 思路
  • 代码实现
  • 原题地址
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档