美文网首页
力扣算法 - 平衡二叉树

力扣算法 - 平衡二叉树

作者: Mr_Bob_ | 来源:发表于2020-08-04 16:48 被阅读0次

平衡二叉树

给定一个二叉树,判断它是否是高度平衡的二叉树。
本题中,一棵高度平衡二叉树定义为:
一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过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 。

思路:

1.从上往下利用递归思想
2.计算左右子树高度
3,当左右子树高速差 <= 1 时候, 该树是平衡的

Java实现
    public boolean isBalanced(TreeNode root) {
        if (root == null) return true;
        return (Math.abs(height(root.left) - height(root.right)) <= 1) && isBalanced(root.left) && isBalanced(root.right);
    }

    public int height(TreeNode node) {
        if (node == null) return 0;
        return Math.max(height(node.left), height(node.right)) + 1;
    }
Swift实现
    func isBalanced(_ root: TreeNode?) -> Bool {
        if root == nil {
            return true
        }
        
        return (abs(height(root?.left) - height(root?.right)) <= 1) &&
               isBalanced(root?.left) &&
               isBalanced(root?.right)
    }
    
    func height(_ node: TreeNode?) -> Int {
        if node == nil {
            return 0;
        }
        return max(height(node?.left), height(node?.right)) + 1
    }
    

相关文章

  • 力扣算法 - 平衡二叉树

    平衡二叉树 给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的...

  • 每日Leetcode—算法(11)

    110.平衡二叉树 算法: 111.二叉树的最小树深 算法: 112.路径总和 算法:

  • LeetCode - 144. 二叉树的前序遍历 Swift &

    给定一个二叉树,返回它的 前序 遍历。示例: 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 来源:力扣(Le...

  • LeetCode - 94. 二叉树的中序遍历 Swift &

    给定一个二叉树,返回它的中序 遍历。 示例: 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 来源:力扣(Le...

  • 2020-10-22二叉树的中序遍历

    给定一个二叉树,返回它的中序 遍历。 示例: 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 来源:力扣(Le...

  • 力扣算法

    二叉树 二叉树的前序遍历-144[https://leetcode-cn.com/problems/binary-...

  • 力扣算法 - 翻转二叉树

    翻转二叉树 翻转一棵二叉树。 示例: 输入: 输出: 思路: Java实现 Swift实现

  • 965. 单值二叉树

    965. 单值二叉树 - 力扣(LeetCode)[https://leetcode.cn/problems/un...

  • 力扣算法分享

    在二维平面上计算出两个由直线构成的矩形重叠后形成的总面积。 每个矩形由其左下顶点和右上顶点坐标表示,如图所示。 输...

  • ATRS第1周

    ATRS Algorithm算法题: 两数之和 - 力扣 (LeetCode) ``` function twoS...

网友评论

      本文标题:力扣算法 - 平衡二叉树

      本文链接:https://www.haomeiwen.com/subject/camwrktx.html