# 543. Diameter of Binary Tree

Check out the problem description here

**Solution**

*Diameter of the tree is the number of edges of longest path between 2 nodes in the tree.*

Approach 1:

Visit all nodes, and for each node find its right height and left height and add both of them to get the diameter passing through that node. This is done for all nodes and maximum of among them is chosen as the diameter of the entire tree

find_max(node):

if root ==None :

return

left_height = height_fun(node.left)

right_height =height_fun(node.right)depth_max = max(depth_max,left_height +right_height)

find_max(node.left)

find_max(node.right)

Time :O(n²)

Space :O(n)

Approach2:

More time efficient solution

class Solution:

def diameterOfBinaryTree(self,root):

self.max_=0

self.rec(root)

return self.max_

def rec(self,node):

if not node:

return 0

left = self.rec(node.left)

right = self.rec(node.right)

self.max_=max(self.max_,left+right)

return max(left,right)+1

Time :O(n)

Space :O(n)