zoukankan      html  css  js  c++  java
  • 力扣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;
        }
    }
  • 相关阅读:
    C#中使用MATLAB
    各种插值法及效果图对比
    Visual Studio中你所不知道的智能感知
    C#中使用Surfer
    XCode中连接使用GitHub
    个人作业Week1
    个人作业Week3
    个人作业Week2
    第一次作业——subway
    执行ajax加载页面中的js总结
  • 原文地址:https://www.cnblogs.com/zhaojiayu/p/15530947.html
Copyright © 2011-2022 走看看