`

Balanced Binary Tree

阅读更多
Given a binary tree, determine if it is height-balanced.

For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.

判断一颗树是否是平衡树。我们先判断根节点左右子树的深度,比较它们的高度差,如果大于1就返回false,如果小于1,递归判断左右子树是否为平衡树。代码如下:
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    public boolean isBalanced(TreeNode root) {
        if(root == null) return true;
        int left = getDepth(root.left, 1);
        int right = getDepth(root.right, 1);
        if(left - right > 1 || left - right < -1) {
            return false;
        } else {
            return isBalanced(root.left) && isBalanced(root.right);
        }
    }
    public int getDepth(TreeNode root, int depth) {
        if(root == null) return depth;
        return Math.max(getDepth(root.left, depth + 1), getDepth(root.right, depth + 1));
    }
}
分享到:
评论

相关推荐

    leetcode的题目:Balanced Binary Tree

    平衡二叉树(Balanced Binary Tree)是一种特殊的二叉树,它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。 平衡二叉树的主要优点在于它能保持较好的搜索性能。在二叉搜索树...

    Balanced-binary-tree.rar_Balanced Binary Tree

    在本项目中,“Balanced-binary-tree.rar”是一个压缩包,包含了一个C++实现平衡二叉树的实例,对于学习C++编程以及理解数据结构的深度是很有帮助的。 平衡二叉树分为几种类型,如AVL树和红黑树。AVL树是最先被提出...

    二叉树详解 binary tree

    - **平衡二叉树**(Balanced Binary Tree): 任意两个叶子节点之间的深度差不大于1。 - **二叉搜索树**(Binary Search Tree): 对于任意节点,其左子树中的所有节点的值小于该节点的值,其右子树中的所有节点的值大于该...

    C++binary tree

    - **平衡二叉树(Balanced Binary Tree)**:左右子树的高度差不超过1,如AVL树和红黑树。 3. **C++中的二叉树实现**: 在C++中,我们通常通过结构体或类来表示二叉树的节点。节点通常包含数据和指向子节点的指针...

    map-for-c-by-balanced-binary-tree

    在这个场景中,我们关注的是一个用C语言实现的特定版本,它基于平衡二叉树(Balanced Binary Tree)来实现Map。平衡二叉树是一种特殊的二叉树,它的每个节点都包含一个键和一个关联的值,同时树的高度保持平衡,这...

    java-二叉树binaryTree

    在这个"java-二叉树binaryTree"主题中,我们将深入探讨二叉树的实现、操作以及相关的算法。 在Java编程语言中,二叉树可以被表示为一个类,这个类通常包含指向左右子节点的引用,以及可能包含的数据。下面是一个...

    pinghen.rar_avl_avl tree_balanced tree_二叉树_平衡二叉树

    平衡二叉树(Balanced Binary Tree)是一种特殊的二叉树数据结构,它的主要特性在于保持了树的高度平衡。这种平衡状态使得在二叉查找树(Binary Search Tree, BST)中的操作,如插入、删除和搜索等,都能在对数时间...

    java-leetcode-110-balanced-binary-tree

    java java_leetcode-110-balanced-binary-tree

    python-leetcode题解之110-Balanced-Binary-Tree

    python python_leetcode题解之110_Balanced_Binary_Tree

    Javatree java树结构

    - 平衡二叉树(Balanced Binary Tree):左右两个子树的高度差不超过1,并且每个节点都包含左子树和右子树。 - 红黑树(Red-Black Tree):一种自平衡二叉查找树,满足特定的颜色属性,保证了插入和删除操作的时间...

    js-leetcode题解之110-balanced-binary-tree.js

    javascript js_leetcode题解之110-balanced-binary-tree.js

    tree树形结构

    - **平衡二叉树(Balanced Binary Tree)**:如AVL树和红黑树,保持左右子树高度平衡,确保搜索效率。 - **B树与B+树**:常用于数据库和文件系统,支持高效的范围查询和插入操作。 - **哈夫曼树(Huffman Tree)*...

    JAVA判断二叉树是否是二叉平衡树

    在本篇博客中,我们将深入探讨如何判断一个给定的二叉树是否为二叉平衡树,以及通过`BinaryTree.java`文件来实现这一功能。 首先,我们需要理解二叉树的基本概念。二叉树是由节点构成的,每个节点最多有两个子节点...

    js tree.rar

    - **平衡二叉树(Balanced Binary Tree)**:左右子树的高度差不超过1,如AVL树和红黑树。 4. **树的实现** - 在JavaScript中,可以使用对象来表示树的节点,每个节点包含数据、指向子节点的引用以及可能的父节点...

    二叉树的应用:二叉排序树BST和平衡二叉树AVL的构造 课设作业 完整代码

    平衡二叉树(Balanced Binary Tree)又被称为AVL树。具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。构造与调整方法。 实验目的: 二叉排序树的实现...

    c语言平衡二叉树代码示例

    平衡二叉树(Balanced Binary Tree)又被称为AVL树(有别于AVL算法),它具有以下性质: 1. 它是一棵空树或它的左右两个子树的高度差的绝对值不超过1。 2. 左右两个子树都是一棵平衡二叉树。 平衡二叉树大部分操作和...

    JAVA制作树TREE

    - **平衡二叉树(Balanced Binary Tree)**: 左右子树的高度差不超过1,如AVL树和红黑树。 - **二叉搜索树(Binary Search Tree, BST)**: 左子树中的所有节点值小于父节点,右子树中的所有节点值大于父节点。 3....

    js 树结构 tree

    5. **平衡二叉树(Balanced Binary Tree)** - 为了优化查找性能,平衡二叉树如AVL树和红黑树等,确保树的左右子树高度差不超过1,保持树的平衡。 6. **二叉搜索树(Binary Search Tree, BST)** - 左子树上的...

    平衡二叉树的所有操作(全)

    平衡二叉树(Balanced Binary Tree),简称平衡树(AVL树):树上任一结点的左子树和右子树的高度之差不超过1。平衡二叉树的一系列操作:删除、插入(在二叉排序树中插入新结点后,如何保持平衡)、调整平衡等等等。...

Global site tag (gtag.js) - Google Analytics