• 力扣110题(平衡二叉树)


    110、平衡二叉树

    具体实现:

    1.明确高度和深度

     求深度用前序遍历,高度用后序遍历

    2.这道题比较高度用后序遍历

    (1)确定递归的参数和返回值

    参数:根节点

    返回值:传入节点为根节点树的深度

    如果当前传入节点为根节点的二叉树不是二叉平衡树了,就返回-1来标记已经不符合平衡树的规则

    (2)确定终止条件

    遇到空节点终止,返回0,表示当前节点为根节点的树高度为0

    (3)确定单层递归的逻辑

    左子树高度和右子树高度的差

    <=1,返回当前二叉树的高度

    否则返回-1

    代码:

    class Solution {
        public boolean isBalanced(TreeNode root) {
            return getHeight(root) != -1;
        }
        private int getHeight(TreeNode root){
            if (root == null) return 0;
            int leftHeight = getHeight(root.left);
            if (leftHeight == -1) return -1;
            int rightHeight = getHeight(root.right);
            if (rightHeight == -1) return -1;
            if (Math.abs(leftHeight-rightHeight) >1) return -1;
            return Math.max(leftHeight,rightHeight) + 1;
        }
    }
  • 相关阅读:
    Electio Time poj
    排列的字典序问题
    poj 2365
    编程中的命名设计那点事(转)
    编程命名中的7+1个提示(转)
    poj 1664 放苹果——递归
    再论字典序
    poj 3618
    sort用法
    poj 1088
  • 原文地址:https://www.cnblogs.com/zhaojiayu/p/15530947.html
Copyright © 2020-2023  润新知