Skip to content

Latest commit

 

History

History
63 lines (53 loc) · 1.52 KB

110.md

File metadata and controls

63 lines (53 loc) · 1.52 KB

✏️Leetcode基础刷题之(110. Balanced Binary Tree)

2019-03-05 吴亲库里 库里的深夜食堂


✏️描述

给定一个二叉树,判断它是否是一棵平衡二叉树。平衡二叉树的定义是:每一节点的两个子树的高度相差不能超过1。


✏️题目实例

    3
   / \
  9  20
    /  \
   15   7

** 上图中符合高度差不大于1的要求。**

       1
      / \
     2   2
    / \
   3   3
  / \
 4   4

上图中根节点1的左右子树的高度差已然超过1,所以它不是平衡二叉树。


✏️题目分析

如果是空树的话,那么是正确的,否则递归他的左右子树进行比较,最后用return -1来表示不平衡,下面是具体php实现代码。

   /**
     * @param TreeNode $root
     * @return Boolean
     */
    function isBalanced($root) {
        return $this->high($root) !==-1;
    }
    
    function high($root){
        if(!$root){
            return 0;
        }
        $left=$this->high($root->left);
        $right=$this->high($root->right);
     
        if($left==-1 ||$right==-1 || abs($left-$right)>1){
            return -1;
        }
            return max($left,$right)+1;
    }

联系