`
frank-liu
  • 浏览: 1684959 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

leetcode: 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.

原问题链接:https://leetcode.com/problems/balanced-binary-tree/

 

问题分析

  这个问题的关键在于要能够推导出判断平衡二叉树的递归关系。从它本身的定义来看,一棵树是否为平衡的,要看它当前的左右子树的高度差是否超过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;
        if(Math.abs(height(root.left) - height(root.right)) > 1) return false;
        return isBalanced(root.left) && isBalanced(root.right);
    }
    
    public int height(TreeNode root) {
        if(root == null) return 0;
        return Math.max(height(root.left), height(root.right)) + 1;
    }
}

 

分享到:
评论

相关推荐

    leetcode的题目:Balanced Binary Tree

    在LeetCode的"Balanced Binary Tree"题目中,通常要求判断给定的二叉树是否是平衡的。这个问题可以通过递归或迭代的方式来解决。递归方法是分别检查左子树和右子树是否平衡,以及它们的高度。迭代方法则可以使用层次...

    java-leetcode-110-balanced-binary-tree

    java java_leetcode-110-balanced-binary-tree

    leetcode分类-LeetCode:力码

    leetcode 分类 LeetCode Progress 128/154 Other Solutions C++,有详细思路解释 python,部分有解释 Java,部分有解释 ...norvig神牛Python代码写的很飘逸,果然是有LISP内功的人!...Balanced Binary Tree Binar

    leetcode110-BinaryTree_HeightBalanced:力扣110

    至于提供的压缩包文件`BinaryTree_HeightBalanced-master`,它很可能包含了该问题的解决方案源代码,可能是用Python或其他编程语言实现的。解压后,你将能够看到具体的实现细节,包括如何创建二叉树节点、如何进行...

    leetcode旋转-Leetcode:力码

    leetcode旋转 Leetcode 视频链接待补充:triangular_flag: 打卡 题目类型 题目编号 ...Balanced Binary Tree Leetcode #110 Day6 AVL Tree Leetcode #108 Day7 AVL Tree Rotation 补充AVL Tree旋转操作

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

    python python_leetcode题解之110_Balanced_Binary_Tree

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

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

    leetcode答案-leetcode-java:leetcode的Java代码

    leetcode 答案leetcode-java leetcode.com 的 Java 答案 ================索引================ com.leetcode.array Search a ...com.leetcode.list ...Balanced Binary Tree Maximum Depth of Binary Tree Same Tree

    Leetcode book刷题必备

    29. Convert Sorted Array to Balanced Binary Search Tree:将有序数组转换成平衡的二叉搜索树。 30. Convert Sorted List to Balanced Binary Search Tree:将有序链表转换成平衡的二叉搜索树。 31. Binary Tree ...

    Leetcode题目+解析+思路+答案.pdf

    - **Balanced Binary Tree**:判断一个二叉树是否是平衡的。 - **Path Sum**:判断是否存在一条路径,其节点值之和等于给定的目标值。 - **Binary Tree Depth Order Traversal**:二叉树的深度优先遍历。 - **...

    LeetCode最全代码

    * [Binary Search Tree](https://github.com/kamyu104/LeetCode#binary-search-tree) * [Breadth-First Search](https://github.com/kamyu104/LeetCode#breadth-first-search) * [Depth-First Search]...

    leetcodelintcode差异-LeetcodeJava:LeetcodeJava

    leetcode lintcode差异 Lintcode 解题思路记录 Table of Contents Linked List Convert Sorted List to Binary Search Tree Given a singly linked list where elements are sorted in ascending order, convert it ...

    leetcode和oj-interviewprep:面试准备

    leetcode 和 oj 完整的面试准备文档 - 基于 GooglePrep.txt 推荐书籍 编程面试曝光:找到下一份工作的秘密,John Mongan、Eric Giguere、Noah Suojanen、Noah Kindler、John Wiley & Sons 算法导论,Thomas H. ...

    左程云leetcode-algorithm-and-data-structure:算法+数据结构=程序https://en.wikipedia

    左程云leetcode 数据结构和算法学习笔记 一、简介 1. 2. 3. 4. 5. 6. 二、数据结构 1. 二维数组(Array2D) 位数组(Bit Set) 静态数组(Fixed Size Array) 有序表(Ordered Array) 2. 队列(Queues) (后进先出...

    左程云leetcode-algorithm-and-data-structure:算法+数据结构=程序

    左程云leetcode 数据结构和算法学习笔记 一、简介 1. 2. 3. 4. 5. 6. 二、数据结构 1. 二维数组(Array2D) 位数组(Bit Set) 静态数组(Fixed Size Array) 有序表(Ordered Array) 2. 队列(Queues) (后进先出...

    LeetCode-js:用 JavaScript 解决 LeetCode 问题

    2. **二叉树**:二叉树问题是算法面试中的常客,例如“二叉树的遍历”(Preorder, Inorder, Postorder Traversal)、“判断是否为平衡二叉树”(Balanced Binary Tree)等。JavaScript 中可以用对象来表示节点,通过...

    leetcode java

    - 平衡二叉树(Balanced Binary Tree)问题需要检查一棵树是否是平衡的。 **位操作(Bit Manipulation)** 位操作是高级的编程技能,涉及到位运算。 - "只出现一次的数字"(Single Number)题目要求找出数组中只...

    常见算法题答案及解析

    28. Balanced Binary Tree:判断二叉树是否为平衡二叉树。 29. Convert Sorted Array to Binary Search Tree:将有序数组转换为高度平衡的二叉搜索树。 30. Convert Sorted List to Binary Search Tree:将有序链表...

    leetcode和oj-leetcode_downloader:用于您已接受的leetcodeoj提交的下载器

    leetcode 和 oj 力码下载器 您已接受的提交的下载器 依赖 只需运行pip install -r requirements.txt来安装它们 ...balanced-binary-tree │  └── Solution.660938.java ├── best-time-to-buy-and-sell-stock

Global site tag (gtag.js) - Google Analytics