加载中...
面试题 04.04-检查平衡性(Check Balance LCCI)
发表于:2021-12-03 | 分类: 简单
字数统计: 416 | 阅读时长: 2分钟 | 阅读量:

原文链接: https://leetcode-cn.com/problems/check-balance-lcci

英文原文

Implement a function to check if a binary tree is balanced. For the purposes of this question, a balanced tree is defined to be a tree such that the heights of the two subtrees of any node never differ by more than one.


Example 1:

Given tree [3,9,20,null,null,15,7]
    3
   / \
  9  20
    /  \
   15   7
return true.

Example 2:

Given [1,2,2,3,3,null,null,4,4]
      1
     / \
    2   2
   / \
  3   3
 / \
4   4
return false.

 

中文题目

实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 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 。

通过代码

高赞题解

解题思路

屏幕快照 2020-02-17 下午5.04.37
image.png

代码

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    //定义变量减枝
    boolean isBalance = true;
    public boolean isBalanced(TreeNode root) {
        if(root==null){
            return true;
        }
        getDepth(root);
        return isBalance;
    }
    private int getDepth(TreeNode node){
        //如果已经找到不平衡的树枝,不需要递归,直接返回
        if(!isBalance){
            return 0;
        }
        if(node == null){
            return 0;
        }
        int left = getDepth(node.left);
        int rignt = getDepth(node.right);
        //判断左右树枝是否平衡,如果不平衡更新减枝变量
        if(Math.abs(left-rignt)>1){
            isBalance = false;
        }
        return Math.max(left,rignt)+1;
    }
}

统计信息

通过次数 提交次数 AC比率
34392 58657 58.6%

提交历史

提交时间 提交结果 执行时间 内存消耗 语言
上一篇:
面试题 04.03-特定深度节点链表(List of Depth LCCI)
下一篇:
面试题 04.05-合法二叉搜索树(Legal Binary Search Tree LCCI)
本文目录
本文目录