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.