Chaturmind
LearnDSASystem DesignDevOpsEngineering GrowthBlog
Start learning
Chaturmind

Structured learning paths for engineers who want to go deep. Written by practitioners.

Learn

  • Java
  • DSA
  • System Design
  • Spring Boot
  • AI / ML
  • DevOps
  • Engineering Growth

Company

  • Blog
  • Contact

Legal

  • Privacy Policy
  • Terms of Service

© 2026 Chaturmind. All rights reserved.

Built for engineers who want to go deep.

← Trees & Graphs

Binary Trees

  • Tree Traversal (DFS & BFS)
  • Binary Search Tree Operations
  • Practice problems

    Invert Binary Tree
  • Validate Binary Search Tree
  • Binary Tree Level Order Traversal
  • Binary Tree Inorder Traversal
  • Maximum Depth of Binary Tree
  • Binary Tree Zigzag Level Order Traversal
  • Construct Binary Tree from Preorder and Inorder Traversal
  • Insert into a Binary Search Tree
  • Kth Smallest Element in a BST
  • Lowest Common Ancestor of a Binary Tree
  • Lowest Common Ancestor of a Binary Search Tree
  • Path Sum II
  • Diameter of Binary Tree
  • Implement Trie (Prefix Tree)

Graph Algorithms

  • Graph DFS & BFS
  • Topological Sort
  • Union-Find (Disjoint Sets)
  • Practice problems

    Redundant Connection
  • Accounts Merge
  • Number of Islands
  • Clone Graph
  • Course Schedule
  • Rotting Oranges
  • Word Ladder
  • Course Schedule II
  • Number of Provinces
Chaturmind
← Trees & Graphs

Binary Trees

  • Tree Traversal (DFS & BFS)
  • Binary Search Tree Operations
  • Practice problems

    Invert Binary Tree
  • Validate Binary Search Tree
  • Binary Tree Level Order Traversal
  • Binary Tree Inorder Traversal
  • Maximum Depth of Binary Tree
  • Binary Tree Zigzag Level Order Traversal
  • Construct Binary Tree from Preorder and Inorder Traversal
  • Insert into a Binary Search Tree
  • Kth Smallest Element in a BST
  • Lowest Common Ancestor of a Binary Tree
  • Lowest Common Ancestor of a Binary Search Tree
  • Path Sum II
  • Diameter of Binary Tree
  • Implement Trie (Prefix Tree)

Graph Algorithms

  • Graph DFS & BFS
  • Topological Sort
  • Union-Find (Disjoint Sets)
  • Practice problems

    Redundant Connection
  • Accounts Merge
  • Number of Islands
  • Clone Graph
  • Course Schedule
  • Rotting Oranges
  • Word Ladder
  • Course Schedule II
  • Number of Provinces
HomeLearnTrees & GraphsBinary Trees
EasyTrees

Diameter of Binary Tree

treedfsrecursion

Problem

Given the root of a binary tree, return the length (number of edges) of the longest path between any two nodes in the tree. The path may or may not pass through the root.

Examples

Example 1

Input: root = [1,2,3,4,5]

Output: 3

Explanation: The longest path is 4 -> 2 -> 1 -> 3 (or 5 -> 2 -> 1 -> 3), 3 edges.

Constraints

  • •The number of nodes is in the range [1, 10^4]

Hints

Hint 1

The diameter through any single node equals the sum of its left and right subtree HEIGHTS — but the overall answer might come from a node that isn't the root.

Hint 2

You need to compute height anyway (recursively) — the trick is updating a running 'best diameter seen so far' as a side effect of that same height computation, rather than a separate pass.

Hint 3

Don't recompute height from scratch at every node (that's O(n^2)) — compute it bottom-up once, and the diameter check piggybacks on the same traversal.

Solutions

public int diameterOfBinaryTreeBruteForce(TreeNode root) {
    if (root == null) return 0;
    int throughRoot = height(root.left) + height(root.right);
    int bestInLeft = diameterOfBinaryTreeBruteForce(root.left);
    int bestInRight = diameterOfBinaryTreeBruteForce(root.right);
    return Math.max(throughRoot, Math.max(bestInLeft, bestInRight));
}
private int height(TreeNode node) {
    if (node == null) return 0;
    return 1 + Math.max(height(node.left), height(node.right));
}

Time: O(n^2) worst case · Space: O(h)

Previous · Practice problem

Path Sum II

Next · Practice problem

Implement Trie (Prefix Tree)