• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
seven_hu
博客园    首页    新随笔    联系   管理    订阅  订阅

求一个二叉树的深度以及如何判断一个二叉树是一个平衡二叉树

/**
* Created by Administrator on 2015/10/10.
*/
public class TreeNode {
//树节点的值
private char data;
//节点的左子树
private TreeNode leftTree;
//节点的右子树
private TreeNode rightTree;
public TreeNode(char data,TreeNode leftTree,TreeNode rightTree){
this.data=data;
this.leftTree=leftTree;
this.rightTree=rightTree;
}
public int getData() {
return data;
}
public void setData(char data) {
this.data = data;
}
public TreeNode getLeftTree() {
return leftTree;
}
public void setLeftTree(TreeNode leftTree) {
this.leftTree = leftTree;
}
public TreeNode getRightTree() {
return rightTree;
}
public void setRightTree(TreeNode rightTree) {
this.rightTree = rightTree;
}
public static int getDepth(TreeNode pNode){
if(pNode==null){
return -1;
}
TreeNode leftTree=pNode.getLeftTree();
TreeNode rightTree=pNode.getRightTree();
if(leftTree==null||rightTree==null){
return 0;
}
int leftDepth=getDepth(leftTree);
int rightDepth=getDepth(rightTree);
int depth=leftDepth>rightDepth?leftDepth:rightDepth;
return depth+1;
}
//判断二叉树是否为一个平衡二叉树
public static boolean isBalance(TreeNode pNode){
if (pNode==null){
return true;
}
TreeNode leftTree=pNode.getLeftTree();
TreeNode rightTree=pNode.getRightTree();
int leftDepth=getDepth(leftTree);
int rightDepth=getDepth(rightTree);
if(leftDepth-rightDepth>1||rightDepth-leftDepth>1){
return false;
}
if(isBalance(leftTree)){
return isBalance(rightTree);
}else{
return false;
}
}
//测试
public static void main(String[] args){
//TreeNode D=new TreeNode('D',null,null);
TreeNode E=new TreeNode('E',null,null);
TreeNode F=new TreeNode('F',null,null);
TreeNode C=new TreeNode('C',E,F);
//TreeNode B=new TreeNode('B',D,null);
TreeNode A=new TreeNode('A',null,C);
System.out.println(isBalance(A));
//System.out.println(getDepth(A));
}
}
posted @ 2015-10-10 15:38  seven_hu  阅读(501)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3