LeetCode 110 判斷平衡二叉樹
阿新 • • 發佈:2020-08-13
Leetcode 110 判斷平衡二叉樹
給定一顆二叉樹,判斷該樹是否滿足平衡條件: 對於任一節點,其左右子樹高度相差不超過1
DFS
執行用時:1 ms, 在所有 Java 提交中擊敗了99.73%的使用者
記憶體消耗:39.8 MB, 在所有 Java 提交中擊敗了70.51%的使用者
class Solution { public boolean isBalanced(TreeNode root) { //空節點 if(root==null) { return true; } //葉子節點 else if(root!=null && root.left==null && root.right==null) { return true; } //非葉子節點 else { return (Math.abs(dfs(root.left)-dfs(root.right))<2) && isBalanced(root.left) && isBalanced(root.right); } } //對於根節點root,返回其左右子樹(如果有的話)的高度 public int dfs(TreeNode root) { if(root==null) { return 0; } int leftHeight = dfs(root.left); int rightHeight = dfs(root.right); return Math.max(leftHeight, rightHeight)+1; } }