var isBalanced = function (root) {
if (!root) return true;
if (Math.abs(findDepth(root.left) - findDepth(root.right)) > 1) return false;
return isBalanced(root.left) && isBalanced(root.right);
};
const findDepth = (root) => {
if (!root) return 0;
return 1 + Math.max(findDepth(root.left), findDepth(root.right));
};
var isBalanced = function (root) {
let flag = true;
const findDepth = (root) => {
if (!root) return 0;
let leftDepth = findDepth(root.left);
let rightDepth = findDepth(root.right);
if (Math.abs(leftDepth - rightDepth) > 1) flag = false;
return 1 + Math.max(leftDepth, rightDepth);
};
findDepth(root);
return flag;
};
這題要判斷一個二元樹是否平衡。
平衡二元樹是一種每個節點的左右兩子樹高度差都不超過一的二元樹。
時間複雜度: O(n),每個節點最多訪問一次
空間複雜度: O(n)
LeetCode 110. Balanced Binary Tree