zoukankan      html  css  js  c++  java
  • 二叉树平衡检查

      实现一个函数,检查二叉树是否平衡,平衡的定义如下,对于树中的任意一个结点,其两颗子树的高度差不超过1。给定指向树根结点的指针TreeNode* root,请返回一个bool,代表这棵树是否平衡。

    import java.util.*;
    
    /*
    public class TreeNode {
        int val = 0;
        TreeNode left = null;
        TreeNode right = null;
        public TreeNode(int val) {
            this.val = val;
        }
    }*/
    public class Balance {
        public boolean isBalance(TreeNode root) {
            
            if(root == null){
                return true;
            }
            
            int lHeight = treeHeight(root.left);
            int rHeight = treeHeight(root.right);        
            if(lHeight - rHeight <= 1 && lHeight - rHeight >= -1){
                return isBalance(root.left) && isBalance(root.right);
            }
            
            return false;        
        }
        
        public int treeHeight(TreeNode root){
            if(root == null){
                return 0;
            }
            
            int lHeight = treeHeight(root.left);
            int rHeight = treeHeight(root.right);        
            return lHeight > rHeight ? lHeight + 1 : rHeight + 1;
        }
    }
  • 相关阅读:
    HDU 5585 Numbers
    HDU 3308 LCIS
    POJ 2991 Crane
    POJ 1436 Horizontally Visible Segments
    POJ 3667 Hotel
    HaiHongOJ 1003 God Wang
    【SDOI 2008】 递归数列
    5月19日省中提高组题解
    【HDU 1588】 Gauss Fibonacci
    【POJ 3233】Matrix Power Series
  • 原文地址:https://www.cnblogs.com/liujinyao/p/4707149.html
Copyright © 2011-2022 走看看