[LeetCode]剑指 Offer 55 - II. 平衡二叉树

Posted Spring-_-Bear

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LeetCode]剑指 Offer 55 - II. 平衡二叉树相关的知识,希望对你有一定的参考价值。

输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过 1,那么它就是一棵平衡二叉树。

示例 1:

给定二叉树 [3,9,20,null,null,15,7]

    3
   / \\
  9  20
    /  \\
   15   7

返回 true 。

示例 2:

给定二叉树 [1,2,2,3,3,null,null,4,4]

       1
      / \\
     2   2
    / \\
   3   3
  / \\
 4   4

返回 false 。

限制:

  • 0 <= 树的结点个数 <= 10000

题解一:

	/**
     * 剑指 Offer 55 - II. 平衡二叉树
     */
    public boolean isBalanced(TreeNode root) 
        /*
         * 后序遍历 + 剪枝 (从底至顶):对二叉树做后序遍历,从底至顶返回子树深度,若判定某子树不是平衡树则 “剪枝” ,向上返回
         */
        return recur(root) != -1;
    

    private int recur(TreeNode root) 
        if (root == null) 
            return 0;
        
        int left = recur(root.left);
        if (left == -1) 
            return -1;
        
        int right = recur(root.right);
        if (right == -1) 
            return -1;
        

        // 判断左、右子树高度差是否小于 2,是则返回当前树的高度,否则返回 -1 代表不是平衡二叉树
        return Math.abs(left - right) < 2 ? Math.max(left, right) + 1 : -1;
    

题解二:

	/**
     * 剑指 Offer 55 - II. 平衡二叉树
     */
    public boolean isBalanced(TreeNode root) 
        /*
         * 先序遍历 + 判断深度 (从顶至底)
         */
         if (root == null) 
             return true;
         
         return Math.abs(dfs(root.left) - dfs(root.right)) <= 1 && isBalanced(root.left) && isBalanced(root.right);
    

    private int dfs(TreeNode root) 
        if (root == null) 
            return 0;
        
        // 返回树的深度
        return Math.max(dfs(root.left), dfs(root.right)) + 1;
    

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/ping-heng-er-cha-shu-lcof

以上是关于[LeetCode]剑指 Offer 55 - II. 平衡二叉树的主要内容,如果未能解决你的问题,请参考以下文章

算法leetcode|剑指 Offer 55 - I. 二叉树的深度|104. 二叉树的最大深度(rust和go)

算法leetcode|剑指 Offer 55 - I. 二叉树的深度|104. 二叉树的最大深度(rust和go)

leetcode-剑指 Offer 55 - II平衡二叉树

LeetCode664. 奇怪的打印机 / 剑指 Offer 55 - I. 二叉树的深度 / 剑指 Offer 55 - II. 平衡二叉树

[LeetCode]剑指 Offer 55 - I. 二叉树的深度

LeetCode(剑指 Offer)- 55 - II. 平衡二叉树