美文网首页
平衡二叉树

平衡二叉树

作者: youzhihua | 来源:发表于2020-02-29 16:14 被阅读0次

题目描述

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

示例

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

    3
   / \
  9  20
    /  \
   15   7
返回 true 。

思路

  1. 可以使用递归算法求解。
  2. 递归处理每个结点,首先计算当前结点左右子树的高度,判断高度差是否小于2;
    -若小于2,则对其左右孩子结点继续递归操作
    -若大于等于2,直接返回false即可。

Java代码实现

class Solution {
    public boolean isBalanced(TreeNode root) {
        if(root == null){
            return true;
        }
        
        int leftDepth = getTreeDepth(root.left);
        int rightDepth = getTreeDepth(root.right);
        
        if(Math.abs(leftDepth-rightDepth)>1){
            return false;
        }
        
        return isBalanced(root.left) && isBalanced(root.right);
    }
    
    private int getTreeDepth(TreeNode root){
        if(root == null){
            return 0;
        }
        
        return Math.max(getTreeDepth(root.left),getTreeDepth(root.right))+1;
    }
}

Golang代码实现

func isBalanced(root *TreeNode) bool {
    if root == nil{
        return true
    }
    
    leftDepth := getTreeDepth(root.Left)
    rightDepth := getTreeDepth(root.Right)
    
    if math.Abs(float64(leftDepth - rightDepth))>1{
        return false
    }
    
    return isBalanced(root.Left) && isBalanced(root.Right)
    
}

func getTreeDepth(root *TreeNode) int {
    if root == nil{
        return 0
    }
    
    leftDepth := getTreeDepth(root.Left)
    rightDepth := getTreeDepth(root.Right)
    
    if leftDepth < rightDepth{
        return rightDepth+1
    }else{
        return leftDepth+1
    }
}

相关文章

  • 剑指 offer:39、平衡二叉树

    39. 平衡二叉树 题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 解题思路: 平衡二叉树:Wiki:在...

  • 平衡二叉树

    1)什么是平衡二叉树?2)平衡二叉树的特点是什么?3)平衡二叉树的构建实现? 一、什么是平衡二叉树?假设有一组数据...

  • 面试题:平衡二叉树

    题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 知识点 平衡二叉树 Qiang的思路 平衡二叉树是指一个...

  • Leetcode 110 平衡二叉树

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

  • 二叉树2-平衡二叉树、完全二叉树、二叉树剪枝

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

  • Leetcode题解 - Easy - 4

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

  • TreeMap源码分析

    TreeMap 平衡二叉树 平衡二叉树(Self-balancing binary search tree)又被称...

  • 图的应用[平衡二叉树以及散列查找]

    平衡⼆二叉树( AVL 树) 平衡⼆二叉树(Self-Balancing Binary Search Tree 或...

  • [LeetCode]110. 平衡二叉树

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

  • 力扣算法 - 平衡二叉树

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

网友评论

      本文标题:平衡二叉树

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