LeetCode 110. Balanced Binary Tree 递归求解

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

110. Balanced Binary Tree

My Submissions
Question
Total Accepted: 97926  Total Submissions: 292400  Difficulty: Easy

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.

Subscribe to see which companies asked this question

Show Tags
Show Similar Problems
Have you met this question in a real interview? 
Yes
 
No

Discuss


    判断一棵树是否是平衡二叉树。BST的递归定义:当一棵树的左右两棵子树的高度只差不超过1,那么该树是平衡二叉树。

    用后根遍历求解。先计算两棵子树的高度差。

    我的AC代码

public class BalancedBinaryTree {
	static boolean ok = true;
	
	public static void main(String[] args) {
		TreeNode n1 = new TreeNode(1);
		TreeNode n2 = new TreeNode(2);
		n1.left = n2;
		System.out.println(isBalanced(n1));
	}

	public static boolean isBalanced(TreeNode root) {
        ok = true;
        dfs(root);
        return ok;
    }
	
	public static int dfs(TreeNode root) {
		if(root == null || !ok) return 0;
		int ha = dfs(root.left);
		int hb = dfs(root.right);
		
		if(Math.abs(ha - hb) > 1) ok = false;
		return Math.max(ha, hb) + 1;
	}
}


你可能感兴趣的:(LeetCode 110. Balanced Binary Tree 递归求解)