平衡二叉树算法
題目1
題目描述
輸入一棵二叉樹的根節點,判斷該樹是不是平衡二叉樹。如果某二叉樹中 任意節點的左右子樹 的深度相差不超過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 。
算法實現
class Solution {public boolean isBalanced(TreeNode root) {return recur(root) != -1;}private int recur(TreeNode root) {if (root == null) return 0;int left = recur(root.left);if(left == -1) return -1;int right = recur(root.right);if(right == -1) return -1;return Math.abs(left - right) < 2 ? Math.max(left, right) + 1 : -1;} }?
題目2
題目描述
給定一個二叉樹,判斷它是否是高度平衡的二叉樹。
示例 1:
輸入:root = [3,9,20,null,null,15,7] 輸出:true示例 2:
輸入:root = [1,2,2,3,3,null,null,4,4] 輸出:false算法實現
class Solution {public boolean isBalanced(TreeNode root) {return height(root) >= 0;}public int height(TreeNode root) {if (root == null) {return 0;}int leftHeight = height(root.left);int rightHeight = height(root.right);if (leftHeight == -1 || rightHeight == -1 || Math.abs(leftHeight - rightHeight) > 1) {return -1;} else {return Math.max(leftHeight, rightHeight) + 1;}} }總結
- 上一篇: 三分钟告诉你游戏配音软件有哪些
- 下一篇: Matlab论文插图绘制模板第84期—极