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));
    }
    }
  • 相关阅读:
    MySQL update && select ,update的同时select,和for update 语句说再见。
    宋体文件C#读取CSV文件java教程
    输入格式邮箱验证格式
    状态集合[Python]Socket高级 select I/O复用模型(二)
    运行下载运行google play闪退的解决办法java教程
    Hibernate查询
    Hibernare 的基本介绍
    Hibernate详细配置
    人工智能能力提升指导总结
    如何根据普通ip地址获取当前地理位置
  • 原文地址:https://www.cnblogs.com/hujingwei/p/4867242.html
Copyright © 2011-2022 走看看