您的位置:首页 > 其它

[LeetCode][二叉树]Balanced Binary Tree

2016-03-26 11:12 411 查看
题目描述:

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.

思路:

前提:判断平衡二叉树中左右子树的高度是否相差小于1

过程:树形结构本质上就是由子结构组成的,所以递归是求解树形结构的常用解法。在本题中,递归求解二叉树高度,然后从根节点开始递归判断是否每一棵子树都是平衡二叉树

代码实现:

/**
* Definition for a binary tree node.
* 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 depthOfLeft = getDepth(root.left,1);
int depthOfRight = getDepth(root.right,1);

if(Math.abs(depthOfLeft-depthOfRight) > 1){
return false;
}else{
return isBalanced(root.left) && isBalanced(root.right);
}
}

private int getDepth(TreeNode tree, int currentDepth){
if(tree == null){
return currentDepth;
}
return Math.max(getDepth(tree.left,currentDepth + 1),getDepth(tree.right,currentDepth + 1));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: