Balanced Binary Tree 判断二叉树是否是高度相差不超过1的高度平衡的二叉树
来源:互联网 发布:idc机房出口端口 编辑:程序博客网 时间:2024/04/28 19:52
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 ofevery node never differ by more than 1.
转载出处:http://blog.csdn.net/ljiabin/article/details/40021481
递归的用发,我真是笨啊
public class Solution {
public boolean isBalanced(TreeNode root) {
if(root==null) return true;
if(root.left==null && root.right==null) return true;
else if(Math.abs(depth(root.left)-depth(root.right))>1) return false;
return (isBalanced(root.left) && isBalanced(root.right));
}
private int depth(TreeNode root){
if(root==null) return 0;
else return Math.max(depth(root.left),depth(root.right))+1;
}
}
下边这种写法,把计算出来的值保存在了树节点里边。利用了TreeNode结构中的val,用它来记录以当前结点为根的子树的高度,避免多次计算。
public class Solution {
public boolean isBalanced(TreeNode root) {
if(root==null) return true;
if(root.left==null && root.right==null) return true;
else if(Math.abs(depth(root.left)-depth(root.right))>1) return false;
return (isBalanced(root.left) && isBalanced(root.right));
}
private int depth(TreeNode root){
if(root==null) return 0;
else{
root.val=Math.max(depth(root.left),depth(root.right))+1;
return root.val;
}
}
}
下边写法的出处见这儿:http://www.programcreek.com/2013/02/leetcode-balanced-binary-tree-java/
写成这样是对的
public class Solution {
public boolean isBalanced(TreeNode root) {
if(root==null) return true;
if (depth(root) == -1) return false;
return true;
}
private int depth(TreeNode root){
if(root == null) return 0;
int left=depth(root.left); //没有这两句,下边的竟然超时了
int right=depth(root.right);
if(left == -1 || right == -1) return -1;
if(Math.abs(left-right)>1) return -1;
return Math.max(left,right)+1;
}
}
但是写成这样却是超时的
public class Solution {
public boolean isBalanced(TreeNode root) {
if(root==null) return true;
if (depth(root) == -1) return false;
return true;
}
private int depth(TreeNode root){
if(root == null) return 0;
if(depth(root.left) == -1 || depth(root.right) == -1) return -1;
if(Math.abs(depth(root.left)-depth(root.right))>1) return -1;
return Math.max(depth(root.left),depth(root.right))+1;
}
}
- Balanced Binary Tree 判断二叉树是否是高度相差不超过1的高度平衡的二叉树
- 110. Balanced Binary Tree | 判断是否是平衡二叉树
- 二叉树的深度&判断一棵二叉树是否是平衡二叉树&110. Balanced Binary Tree
- 【LeetCode笔记】Balanced Binary Tree 高度平衡二叉树
- 平衡二叉树计算高度的同时判断是否平衡
- Balanced Binary Tree 平衡二叉树的判断
- LeetCode:Balanced Binary Tree(平衡二叉树的判断)
- Balanced Binary Tree 判断是否平衡二叉树 @LeetCode
- Balanced Binary Tree 判断是否为平衡二叉树
- Balanced Binary Tree:判断一棵树是否为平衡二叉树
- 是否是平衡二叉树 110. Balanced Binary Tree
- 判断二叉树是否平衡,计算树的高度
- LeetCode(Balanced Binary Tree ) 判断一个二叉树是否为平衡二叉树
- leetcode_110. Balanced Binary Tree 判断一棵二叉树是否为平衡二叉树
- 高度平衡的二叉树
- Balanced Binary Tree 平衡二叉树的检验
- leetcode -- 110. Balanced Binary Tree 【二叉树是否平衡】
- LeetCode OJ 之 Balanced Binary Tree (平衡二叉树的判断)
- 如何在IE中去掉加了a标签超链接的图片的蓝色边框
- 21.cocos2d-x小鱼Sprite3D
- C语言学习之关键字第三讲
- (Java基础--反射)透彻分析反射的基础--Class类
- copy与clone
- Balanced Binary Tree 判断二叉树是否是高度相差不超过1的高度平衡的二叉树
- python操作MySQL数据库(MySQLdb
- Java中Collection和Collections的区别
- CRM 活动类型单据结束时间
- textView中自定义选择内容后的菜单
- Fisher's Exact Test
- iOS 键盘类型
- 再生核希尔伯特空间--预备知识1
- 【虫师--系列10】cookie、session、sessionid 与jsessionid