Java實現 LeetCode 110.平衡二叉樹

給定一個二叉樹,判斷它是否是高度平衡的二叉樹。

本題中,一棵高度平衡二叉樹定義爲:

一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過1。

示例 1:

給定二叉樹 [3,9,20,null,null,15,7]

3

/
9 20
/
15 7
返回 true 。

示例 2:

給定二叉樹 [1,2,2,3,3,null,null,4,4]

   1
  / \
 2   2
/ \

3 3
/
4 4
返回 false 。

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.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; }
 * }
 */
class Solution {
    public boolean isBalanced(TreeNode root) {
        if(root == null) return true;
		return Math.abs(deep(root.left)-deep(root.right)) <= 1&& isBalanced(root.left)
				&& isBalanced(root.right);
	}
	private int deep(TreeNode node) {
		if(node == null) return 0;
		return Math.max(deep(node.left), deep(node.right)) + 1;
	
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章