【剑指offer】面试题55 - II:平衡二叉树(Java)
輸入一棵二叉樹的根節點,判斷該樹是不是平衡二叉樹。如果某二叉樹中任意節點的左右子樹的深度相差不超過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 。
?
限制:
1 <= 樹的結點個數 <= 10000
代碼:
/**
?*?Definition?for?a?binary?tree?node.
?*?public?class?TreeNode?{
?*?????int?val;
?*?????TreeNode?left;
?*?????TreeNode?right;
?*?????TreeNode(int?x)?{?val?=?x;?}
?*?}
?*/
class?Solution?{
????public?boolean?isBalanced(TreeNode?root)?{
????????return?helper(root)!=-1;
????}
????public?int?helper(TreeNode?root)
????{
????????if(root?==?null)?return?0;
????????int?left?=?helper(root.left);
????????if(left?==?-1)?return?-1;?//左子樹不平衡直接返回-1
????????int?right?=?helper(root.right);
????????if(right?==?-1)?return?-1;?//右子樹不平衡直接返回-1
????????return?Math.abs(left?-?right)?>?1???-1?:?1?+?Math.max(left,?right);
????}
}
總結
以上是生活随笔為你收集整理的【剑指offer】面试题55 - II:平衡二叉树(Java)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Leetcode--450. 删除二叉搜
- 下一篇: B1015/A1062 . 德才论 (2