zoukankan      html  css  js  c++  java
  • 0110. Balanced Binary Tree (E)

    Balanced Binary Tree (E)

    题目

    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.

    Example 1:

    Given the following tree [3,9,20,null,null,15,7]:

        3
       / 
      9  20
        /  
       15   7
    

    Return true.

    Example 2:

    Given the following tree [1,2,2,3,3,null,null,4,4]:

           1
          / 
         2   2
        / 
       3   3
      / 
     4   4
    

    Return false.


    题意

    判断指定树是否为平衡二叉树,即对于树中任意一个结点,它的左子树和右子树高度之差不大于1。

    思路

    在递归求各结点高度的同时,判断当前结点的左子树和右子树高度之差是否大于1。


    代码实现

    Java

    class Solution {
        boolean isBalanced = true;
    
        public boolean isBalanced(TreeNode root) {
            getHeight(root);
            return isBalanced;
        }
    
        private int getHeight(TreeNode x) {
            // 空结点时返回高度
            // 当已经确定该树不平衡时,无需再向下递归
            if (x == null || !isBalanced) {
                return 0;
            }
    
            int lHeight = getHeight(x.left);
            int rHeight = getHeight(x.right);
    
            if (Math.abs(lHeight - rHeight) > 1) {
                isBalanced = false;
            }
    
            return Math.max(lHeight, rHeight) + 1;
        }
    }
    

    JavaScript

    /**
     * @param {TreeNode} root
     * @return {boolean}
     */
    var isBalanced = function (root) {
      return dfs(root) !== -1
    }
    
    let dfs = function (root) {
      if (!root) {
        return 0
      }
    
      let left = dfs(root.left)
      let right = dfs(root.right)
    
      if (left === -1 || right === -1 || Math.abs(left - right) > 1) {
        return -1
      }
    
      return Math.max(left, right) + 1
    }
    
  • 相关阅读:
    【FPGA】结构化层次化设计
    【FPGA】库、包和子程序 过程 函数
    【FPGA】8位奇偶校验 / 加(减)法器 VHDL程序
    【FPGA】顺序语句
    【FPGA】并行语句
    【FPGA】VHDL基础
    Luogu P3349 小星星
    Luogu P4284 概率充电器
    NOIP2018 | D2T2 & D2T3
    二项式反演 小记
  • 原文地址:https://www.cnblogs.com/mapoos/p/14174141.html
Copyright © 2011-2022 走看看