15 Jun 2024C++ / Python / TypeScriptEasy

Diameter of Binary Tree

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

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

solution files

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

Solution files

Pythondiameter-of-binary-tree/synced-solution.py
class Solution:
    def diameterOfBinaryTree(self, root: Optional[TreeNode]) -> int:
        diameter = class="syntax-number">0

        def depth(node):
            nonlocal diameter
            if not node:
                return class="syntax-number">0
            left = depth(node.left)
            right = depth(node.right)
            diameter = max(diameter, left + right)
            return class="syntax-number">1 + max(left, right)

        depth(root)
        return diameter
C++diameter-of-binary-tree/synced-solution.cpp
class Solution {
public:
    int diameterOfBinaryTree(TreeNode* root) {
        diameter = class="syntax-number">0;
        depth(root);
        return diameter;
    }

private:
    int diameter;

    int depth(TreeNode* node) {
        if (!node) {
            return class="syntax-number">0;
        }
        int left = depth(node->left);
        int right = depth(node->right);
        diameter = max(diameter, left + right);
        return class="syntax-number">1 + max(left, right);
    }
};
TypeScriptdiameter-of-binary-tree/synced-solution.ts
function diameterOfBinaryTree(root: TreeNode | null): number {
    let diameter = class="syntax-number">0;

    const depth = (node: TreeNode | null): number => {
        if (!node) {
            return class="syntax-number">0;
        }
        const left = depth(node.left);
        const right = depth(node.right);
        diameter = Math.max(diameter, left + right);
        return class="syntax-number">1 + Math.max(left, right);
    };

    depth(root);
    return diameter;
}