Leetcode之(110. Balanced Binary Tree)
2019-3-4 星期一 开始今天的leetcode之路
题目描述
给定一个二叉树,判断它是否是一棵平衡二叉树。平衡二叉树的定义是:每一节点的两个子树的高度相差不能超过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; }
1 Comment
支持一下