標籤:discuss 函數 treenode 返回 amp bool 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 of the two subtrees of every node never differ by more than 1.
很早以前做的了 準備把這些筆記都轉移到部落格園上 其一加深理解 其二再打一遍也有好處
這題大意 給出一個二叉樹 判斷這個二叉樹 是否平衡 平衡的條件為 任意一個節點的左子樹和右子樹高度相差不超過一
思路很簡單 首先要有一個得出樹高度的函數
節點為空白 樹高度為零 否則樹的高度為左子樹的高度和右子樹的高度中最大的那個加一,加一的意思就是加上自身這個節點的高度
判斷左子樹和右子樹高度是否相差大於一 如果大於一 返回一個標記數 可以用-1標記
直接碼代碼
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { public boolean isBalanced(TreeNode root) { return height(root)!=-1; } public int height(TreeNode root){ if(root==null) return 0; int left=height(root.left); int right=height(root.right); if(left==-1||right==-1||Math.abs(left-right)>1) return -1; return Math.max(left,right)+1; }}
一次過了
看看 detail
2ms 感覺有點長了 我覺得應該是0ms層級的
慣例 學習別人的優秀解法 看看discuss 裡最受歡迎的那個
public class Solution { public boolean isBalanced(TreeNode root) { if(null == root) { return true; } return Math.abs(height(root.left) - height(root.right)) < 2 && isBalanced(root.left) && isBalanced(root.right); } public int height(TreeNode root) { if(null == root) { return 0; } return 1 + Math.max(height(root.left), height(root.right)); }}
恩 其實和我的思路一樣 只是寫法不同 ~
110.Balanced Binary Tree Leetcode解題筆記