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;
        }
    }
  • 相关阅读:
    Aop——面向切面编程
    认识界上最流行的Api框架——swagger
    手把手SSM框架实战
    面试题
    重新拾起JavaSE的日子
    使用IntelliJ IDEA创建第一个Maven项目
    Java面试必考题
    Vue项目——去哪网(首页部分)
    Vue项目的准备
    vue.js ③
  • 原文地址:https://www.cnblogs.com/zhaojiayu/p/15530947.html
Copyright © 2011-2022 走看看