zoukankan      html  css  js  c++  java
  • 求一个二叉树的深度以及如何判断一个二叉树是一个平衡二叉树

    /**
    * 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));
    }
    }
  • 相关阅读:
    团队作业2-《需求规格说明书》
    团队作业 —— 团队选题
    自我介绍+软工五问
    团队作业5——测试与发布(Alpha版本)
    结对项目(与陈超国)
    个人项目wordcount
    自我介绍+软工5问
    个人项目(C语言)
    自我介绍+软工五问
    第三篇 Scrum冲刺博客
  • 原文地址:https://www.cnblogs.com/hujingwei/p/4867242.html
Copyright © 2011-2022 走看看