Leetcode: Balanced Binary Tree
来源:互联网 发布:东航巴黎昆明 知乎. 编辑:程序博客网 时间:2024/05/02 01:11
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.
Below solution uses two recursion, which is not recommended: find the max depth of left and right node separately, and compare to see their difference. Actually recursion is repeated here, which can be improved.
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { public boolean isBalanced(TreeNode root) { if (root == null) { return true; } int left = maxDepth(root.left); int right = maxDepth(root.right); if (Math.abs(left - right) > 1) { return false; } else { return isBalanced(root.left) && isBalanced(root.right); } } private int maxDepth(TreeNode root) { if (root == null) { return 0; } return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1; }}
A preferable method is: when calculating for the max depth, exam whether the difference of depth of left subtree and right subtree is larger than 1 at the same time. Once it is, return -1 as a false answer.
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { public boolean isBalanced(TreeNode root) { return maxDepth(root) != -1; } private int maxDepth(TreeNode root) { if (root == null) { return 0; } int left = maxDepth(root.left); int right = maxDepth(root.right); if (left == -1 || right == -1 || Math.abs(left - right) > 1) { return -1; } return Math.max(left, right) + 1; }}
0 0
- LeetCode: Balanced Binary Tree
- [LeetCode]Balanced Binary Tree
- LeetCode Balanced Binary Tree
- [Leetcode] Balanced Binary Tree
- LeetCode : Balanced Binary Tree
- LeetCode Balanced Binary Tree
- [LeetCode] Balanced Binary Tree
- 【leetcode】Balanced Binary Tree
- [LeetCode]Balanced Binary Tree
- [LeetCode] Balanced Binary Tree
- [Leetcode]Balanced Binary Tree
- [leetcode]Balanced Binary Tree
- Leetcode: Balanced Binary Tree
- LeetCode-Balanced Binary Tree
- LeetCode - Balanced Binary Tree
- [LeetCode] Balanced Binary Tree
- LeetCode | Balanced Binary Tree
- 【leetcode】Balanced Binary Tree
- 个推服务端api使用误区
- 公有云PaaS平台邀请码分享
- Drupal 7 模块 .info 文件介绍
- Notepad++的ftp远程编辑功能
- MySql数据库的基本操作-表数据中的 唯一约束 & 默认约束
- Leetcode: Balanced Binary Tree
- 配置了两台redis主从failover
- Qt的4个图像类QImage/QPixmap/QBitmap/QPicture 转
- MyBatis官方小例代码剖析
- Java ZIp 压缩和解压
- hdu 1258 Sum It Up (dfs)
- 然而,家乡生活的舒适和安逸,对我的惰性来说,是一大引诱
- QT 操作记录,待实践
- linux中Dcumentation目录下的basic_profiling.txt文档翻译