【LeetCode】110. Balanced Binary Tree-判断是否为平衡二叉树
2017-03-28 10:38
716 查看
一、描述:
通过每一棵左右子树的深度判断子树是否为平衡二叉树,只有当所有的子树是平衡二叉树时,才能得出整棵树是平衡二叉树;
故函数方法中有两种判断,1是空树?2左右两个子树的高度差的绝对值不超过1?
二、思路
平衡二叉树(Balanced Binary Tree):又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树;通过每一棵左右子树的深度判断子树是否为平衡二叉树,只有当所有的子树是平衡二叉树时,才能得出整棵树是平衡二叉树;
故函数方法中有两种判断,1是空树?2左右两个子树的高度差的绝对值不超过1?
三、代码:
1 /** 2 * Definition for a binary tree node. 3 * public class TreeNode { 4 * int val; 5 * TreeNode left; 6 * TreeNode right; 7 * TreeNode(int x) { val = x; } 8 * } 9 */ 10 public class Solution { 11 public boolean isBalanced(TreeNode root) { 12 if(root==null){ 13 return true; 14 } 15 int left = depth(root.left); 16 int right = depth(root.right); 17 if(left+1<right || right+1<left){ 18 4000 return false; 19 }else{ 20 return isBalanced(root.left)&&isBalanced(root.right); 21 } 22 } 23 24 public int depth(TreeNode root){ 25 if(root==null){ 26 return 0; 27 }else{ 28 int left = depth(root.left); 29 int right = depth(root.right); 30 return left<right?right+1:left+1; 31 } 32 } 33 }
相关文章推荐
- leetcode_110. Balanced Binary Tree 判断一棵二叉树是否为平衡二叉树
- Leetcode#110. Balanced Binary Tree(判断是否是平衡二叉树)
- leetcode 110. Balanced Binary Tree 判断是否是一颗平衡二叉树
- 剑指offer 面试题39:判断平衡二叉树(LeetCode 110. Balanced Binary Tree) 题解
- Balanced Binary Tree 判断是否平衡二叉树 @LeetCode
- LeetCode(Balanced Binary Tree ) 判断一个二叉树是否为平衡二叉树
- LeetCode 判断一个数是否为平衡二叉树 Balanced Binary Tree
- LeetCode——Balanced Binary Tree(判断是否平衡二叉树)
- 110. Balanced Binary Tree | 判断是否是平衡二叉树
- leetcode 110. Balanced Binary Tree(平衡二叉树的判断) DFS深度优先遍历
- Balanced Binary Tree 判断是否为平衡二叉树 解法集合
- LeetCode 110. Balanced Binary Tree(平衡二叉树)
- LeetCode 110. Balanced Binary Tree (平衡二叉树)
- 是否是平衡二叉树 110. Balanced Binary Tree
- leetcode -- 110. Balanced Binary Tree 【二叉树是否平衡】
- leetCode 110.Balanced Binary Tree (平衡二叉树) 解题思路和方法
- [LeetCode] 110. Balanced Binary Tree 平衡二叉树
- LeetCode:Balanced Binary Tree(判断是否为二叉平衡树)
- 【平衡二叉树】leetcode 110. Balanced Binary Tree
- LeetCode_110.Balanced Binary Tree_平衡二叉树