15 Jun 2024C++ / Python / TypeScriptEasy

Balanced Binary Tree

Collected C++, Python, TypeScript solutions for balanced binary tree. Add a dedicated write-up later if you want deeper notes.

auto-generated entry for Balanced Binary Tree. the solution files are available below.

solution files

  • C++ balanced-binary-tree/synced-solution.cpp
  • Python balanced-binary-tree/synced-solution.py
  • TypeScript balanced-binary-tree/synced-solution.ts

Solution files

Pythonbalanced-binary-tree/synced-solution.py
class Solution:
    def isBalanced(self, root: Optional[TreeNode]) -> bool:
        def getHeight(node):
            if not node:
                return class="syntax-number">0
            left_height = getHeight(node.left)
            if left_height == -class="syntax-number">1:
                return -class="syntax-number">1
            right_height = getHeight(node.right)
            if right_height == -class="syntax-number">1:
                return -class="syntax-number">1
            if abs(left_height - right_height) > class="syntax-number">1:
                return -class="syntax-number">1
            return max(left_height, right_height) + class="syntax-number">1
        return getHeight(root) != -class="syntax-number">1
C++balanced-binary-tree/synced-solution.cpp
class Solution {
public:
    bool isBalanced(TreeNode* root) {
        return getHeight(root) != -class="syntax-number">1;
    }
private:
    int getHeight(TreeNode* node) {
        if (!node) return class="syntax-number">0;
        int left_height = getHeight(node->left);
        if (left_height == -class="syntax-number">1) return -class="syntax-number">1;
        int right_height = getHeight(node->right);
        if (right_height == -class="syntax-number">1) return -class="syntax-number">1;
        if (abs(left_height - right_height) > class="syntax-number">1) return -class="syntax-number">1;
        return max(left_height, right_height) + class="syntax-number">1;
    }
};
TypeScriptbalanced-binary-tree/synced-solution.ts
function isBalanced(root: TreeNode | null): boolean {
    function getHeight(node: TreeNode | null): number {
        if (!node) return class="syntax-number">0;
        const left_height = getHeight(node.left);
        if (left_height === -class="syntax-number">1) return -class="syntax-number">1;
        const right_height = getHeight(node.right);
        if (right_height === -class="syntax-number">1) return -class="syntax-number">1;
        if (Math.abs(left_height - right_height) > class="syntax-number">1) return -class="syntax-number">1;
        return Math.max(left_height, right_height) + class="syntax-number">1;
    }
    return getHeight(root) !== -class="syntax-number">1;
}