LeetCode[110]平衡二叉树

思路:

本题解法依旧是后序遍历,采用左右根来解决,如果你要采用前序遍历什么的,你需要先计算根节点,那根节点的计算又要计算子节点,然后再递归左右,这样子节点就会被重复计算,对时间复杂度来说不太友好,属于O(nlog(n))时间复杂度。

但采用后序遍历就不一样了,只需要把每个节点都遍历一下就能得出答案,所以时间复杂度为O(n), 高下立判

代码:

java 复制代码
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public boolean isBalanced(TreeNode root) {
        return getHeight(root) != -1;
    }

    public 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;
    }
}
相关推荐
嵌入式-老费11 分钟前
Easyx使用(中篇)
算法
信奥卷王18 分钟前
[GESP202312 五级] 烹饪问题
算法
云雾J视界31 分钟前
算法偏见的解药:将敏捷“灵魂”注入AI伦理
人工智能·算法·谷歌·伦理债·算法偏见·高效程序员·ai决策系统
CHANG_THE_WORLD1 小时前
函数简单传入参数的汇编分析
汇编·c++·算法
安全风信子1 小时前
45_混合专家模型:MoE架构详解
算法
ASIAZXO2 小时前
机器学习——聚类kmeans算法详解
算法·机器学习·聚类
hello_lain3 小时前
9.1 简单排序(冒泡、插入)(排序(上))
c语言·数据结构·算法·排序算法
炬火初现3 小时前
Hot100——普通数组
算法·leetcode·职场和发展
啊我不会诶3 小时前
【数据结构】字典树
数据结构·算法