关闭

【Leetcode】Balanced Binary Tree

230人阅读 评论(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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:527922次
    • 积分:8194
    • 等级:
    • 排名:第2537名
    • 原创:305篇
    • 转载:6篇
    • 译文:0篇
    • 评论:34条
    博客专栏
    文章分类
    最新评论