Diameter of Binary Tree – Leetcode Solution

In this post, we are going to solve the 543. Diameter of Binary Tree problem of Leetcode. This problem 543. Diameter of Binary Tree is a Leetcode easy level problem. Let’s see the code, 543. Diameter of Binary Tree – Leetcode Solution.

Problem

Given the root of a binary tree, return the length of the diameter of the tree.

The diameter of a binary tree is the length of the longest path between any two nodes in a tree. This path may or may not pass through the root.

The length of a path between two nodes is represented by the number of edges between them.

Example 1 :

Input: root = [1,2,3,4,5]
Output: 3
Explanation: 3 is the length of the path [4,2,1,3] or [5,2,1,3].

Example 2 :

Input: root = [1,2]
Output: 1

Constraints

  • The number of nodes in the tree is in the range [1, 104].
  • -100 <= Node.val <= 100

Now, let’s see the code of 543. Diameter of Binary Tree – Leetcode Solution.

Diameter of Binary Tree – Leetcode Solution

543. Diameter of Binary Tree – Solution in Java

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    
    public int heightOfTree(TreeNode root, int[] diameter){
        if(root == null) return 0;
        
        int lht = heightOfTree(root.left,diameter);
        int rht = heightOfTree(root.right,diameter);
        
        
        diameter[0] = Math.max(diameter[0],lht+rht);
        return 1 + Math.max(lht,rht);
    }
    public int diameterOfBinaryTree(TreeNode root) {
        if(root == null) return 0;
        int[] dia = new int[1];
        heightOfTree(root,dia);
        return dia[0];
    }
}

543. Diameter of Binary Tree – Solution in C++

int diameterOfBinaryTree(TreeNode* root) {
        int d=0;
        rec(root, d);
        return d;
    }
    
    int rec(TreeNode* root, int &d) {
        if(root == NULL) return 0;
        int ld = rec(root->left, d);
        int rd = rec(root->right, d);
        d=max(d,ld+rd);
        return max(ld,rd)+1;
    }

543. Diameter of Binary Tree – Solution in Python

class Solution(object):
    def diameterOfBinaryTree(self, root):
        """
        :type root: TreeNode
        :rtype: int
        """
        self.ans = 0
        
        def depth(p):
            if not p: return 0
            left, right = depth(p.left), depth(p.right)
            self.ans = max(self.ans, left+right)
            return 1 + max(left, right)
            
        depth(root)
        return self.ans

Note: This problem 543. Diameter of Binary Tree is generated by Leetcode but the solution is provided by CodingBroz. This tutorial is only for Educational and Learning purpose.

Leave a Comment

Your email address will not be published. Required fields are marked *