您的位置:首页 > 其它

二叉树的深度以及判断平衡二叉树

2016-05-23 23:14 302 查看

输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度

–一个根节点的左右有几个子节点,而该树的深度就是求左右子节点的最大一个+1

public int TreeDepath(TreeNode pRoot){
if(pRoot==null)
return 0;
if(TreeDepath(pRoot.left)>=TreeDepath(pRoot.right)){
return 1+TreeDepath(pRoot.left);
}else{
return 1+TreeDepath(pRoot.right);
}
}


输入一棵二叉树,判断该二叉树是否是平衡二叉树。

平衡二叉树:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。

–先求出左右两个子树的深度,然后他们的深度差的绝对值>1(我编程的时候一直写的是<=1,运行只通过28.5%,弄不懂不为啥?等以后弄清楚在写清楚),还有一点最重要的是性质中说了左右两个子树都是一棵平衡二叉树,所以还要判断

IsBalanced_Solution(root.left)&&IsBalanced_Solution(root.right)

public class Solution {
public boolean IsBalanced_Solution(TreeNode root) {
if(root==null){
return true;
}
if(Math.abs(TreeDepath(root.left)-TreeDepath(root.right))>1)
return false;
return IsBalanced_Solution(root.left)&&IsBalanced_Solution(root.right);

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