关闭

【Leetcode】Balanced Binary Tree

300人阅读 评论(0) 收藏 举报
分类:

题目链接:https://leetcode.com/problems/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.

思路:

根据结点高度,递归判断是否满足平衡树定义。此题跟Kth Smallest Element in a BST 做法类似,在遍历过程中遇到满足某条件的结点时,将结果放到全局变量中,如果没遇到最终递归返回的就是全局变量的初始值,否则返回的变化后的值。   就像一个开关,达到条件时,就变化;没达到条件,就不变。 因为判断每个结点需要求该结点左右高度,所以时间复杂度是O(n^2)。

算法:

	public boolean isBalanced(TreeNode root) {
		if (root == null)
			return true;
		int h1 = heightTree(root.left);
		int h2 = heightTree(root.right);
		boolean flag = Math.abs(h1 - h2) > 1 ? false : true;
		if (flag == false) { // 当不满足平衡树定义时,将结果放到全局变量中。
			result = false;
		} // 如果所有结点都平衡,则result不变还时初始值 true
		isBalanced(root.left);
		isBalanced(root.right);
		return result;
	}

	public int heightTree(TreeNode p) {
		if (p == null)
			return 0;
		int h1 = heightTree(p.left);
		int h2 = heightTree(p.right);
		return h1 > h2 ? h1 + 1 : h2 + 1;
	}



0
0
查看评论

LeetCode(110)Balanced Binary Tree

题目如下: 分析如下: 之前尝试一边计算深度,一边做判断,发现这是无法实现的。因为bool型的返回变量说明了返回值没有深度信息,而如果没有深度信息,那么就无法判断左子树和右子树的深度差是否为1.所以说明还要另外使用一个计算深度的函数来做辅助了。 我的代码: 看了一下,是个很正常的代码风格。 //...
  • feliciafay
  • feliciafay
  • 2014-01-16 07:46
  • 5072

【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...
  • ljiabin
  • ljiabin
  • 2014-10-12 20:15
  • 5815

【leetCode】 Balanced Binary Tree python版实现

原题链接Balanced Binary Tree实现原理解析 该题比较简单,主要思想是递归的判断左右子树的高度不大于1即可,注意异常处理 python代码实现class Solution(object): def isBalanced(self, root): "...
  • hongkangwl
  • hongkangwl
  • 2016-06-18 16:56
  • 725

Leetcode_110_Balanced Binary Tree

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42218839 Given a binary tree, determine if it is height-balanced. For this p...
  • pistolove
  • pistolove
  • 2014-12-28 21:35
  • 1413

LeetCode 110. Balanced Binary Tree 递归求解

题目链接:https://leetcode.com/problems/balanced-binary-tree/  110. Balanced Binary Tree My Submissions Question Total Accepted:&#...
  • bruce128
  • bruce128
  • 2016-02-23 16:28
  • 1321

leetcode 110 Balanced Binary Tree C++

一次过,但是写出来的代码并不是最高效。 class Solution { public: bool isBalanced(TreeNode* root) { if (!root) return true; if(abs(height(root->lef...
  • a2331046
  • a2331046
  • 2016-05-28 20:19
  • 239

LeetCode-Balanced Binary Tree && 二叉树的深度 && 二叉树的平衡

作者:disappearedgod 文章出处:http://blog.csdn.net/disappearedgod/article/details/24474235 时间:2014-5-20 题目 解法 迭代
  • disappearedgod
  • disappearedgod
  • 2014-05-20 13:16
  • 1026

[LeetCode]--110. 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...
  • bug_moving
  • bug_moving
  • 2016-10-04 15:01
  • 623

Leetcode全树类问题

Leetcode全树类问题。算法总的来说就是递归(Stack, DFS)和广度优先(Queue, BFS)两种。下面有关二叉树类linked list的题目,若不加特别说明...
  • wangxiaojun911
  • wangxiaojun911
  • 2014-02-04 03:03
  • 8734

Leetcode-标签为Tree 110. Balanced Binary Tree

判断二叉树是否为平衡二叉树。
  • daigualu
  • daigualu
  • 2017-04-23 09:49
  • 1396
    个人资料
    • 访问:567878次
    • 积分:8665
    • 等级:
    • 排名:第2679名
    • 原创:305篇
    • 转载:6篇
    • 译文:0篇
    • 评论:37条
    博客专栏
    文章分类
    最新评论