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

来源:互联网 发布:优化设计 编辑:程序博客网 时间:2024/06/05 05:26

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

–一个根节点的左右有几个子节点,而该树的深度就是求左右子节点的最大一个+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);            }        }}
阅读全文
0 0
原创粉丝点击