Diameter of Binary Tree - Codeprg

Breaking

programing News Travel Computer Engineering Science Blogging Earning

Sunday 9 August 2020

Diameter of Binary Tree


 Diameter of Binary Tree

Given a binary tree, you need to compute 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.

Example:
Given a binary tree

          1
         / \
        2   3
       / \     
      4   5    

Return 3, which is the length of the path [4,2,1,3] or [5,2,1,3].

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

 /**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
     int ans=0;
public:
  
    int path(TreeNode* p)
    {
        if(p==NULL)return 0;
        int a=path(p->left);
        int b=path(p->right);
        ans=max(ans,a+b);
        return 1+max(a,b);
    }
   
    int diameterOfBinaryTree(TreeNode* p)
    {
        if(p==NULL)return 0;
        // int l=path(p->left);
        // int r=path(p->right);
        // int ld=diameterOfBinaryTree(p->left);
        // int rd=diameterOfBinaryTree(p->right);
        //  return max(l+r,max(ld,rd));
        path(p);
        return ans;  
    }
   
};