Isaac Emmanuel
15 Jun 2024•EasyC++ / Python / TypeScript

Diameter of Binary Tree

C++, Python and TypeScript solutions for Diameter of Binary Tree.

The Diameter of Binary Tree solutions are below.

Solution files

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

        def depth(node):
            nonlocal diameter
            if not node:
                return 0
            left = depth(node.left)
            right = depth(node.right)
            diameter = max(diameter, left + right)
            return 1 + max(left, right)

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

private:
    int diameter;

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

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

    depth(root);
    return diameter;
}