二叉树的深度以及判断平衡二叉树
2016-05-23 23:14
302 查看
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度
–一个根节点的左右有几个子节点,而该树的深度就是求左右子节点的最大一个+1public 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); } }
}
相关文章推荐
- Atitit.二维码功能的设计实践 attilax 总结
- 下拉刷新和上拉加载
- 爆炸!iOS资源大礼包(持续更新...)
- 从零开始jsp旅行-准备背包
- 控制反转(ioc)和依赖注入 【很详细】
- singleTask
- Atitit.二维码功能的设计实践 attilax 总结
- Atitit.二维码功能的设计实践 attilax 总结
- Adnroid调用自身的播放器来播放音乐
- ansible部署简单高可用LAMP
- git常用命令
- List排序之根据对象属性
- AutoHotKey的那些事儿:(六)、AutoHotkey开发环境的搭建
- Object-C之反射
- php面向对象编程
- Atitit.数据操作dsl 的设计 ---linq 方案
- 梦断代码阅读笔记01
- git 笔记
- apache里的wordpress伪静态永久规则(百度的)
- 第一个Android Project中遇到的问题