Please help : I have two job interview first one is tomorrow next one is a week later In last 18 hours i solved 25↵
interview problems from diferent In seven days My target is 300 ,please save my life :)↵
↵
I am trying to find diameter using recursion ,I am confused with recursion↵
↵
some of the test cases I tried I got correct answer at some point Integer overflow occured But Below author's solution was accepted with same data types↵
↵
My approach:↵
↵
For every node, length of longest path which pass it = MaxDepth of its left subtree + MaxDepth of its right subtree.↵
↵
My question is whats wrong with my implementation↵
↵
~~~~~↵
↵
class Solution {↵
public:↵
int mx = 0;↵
int solve(TreeNode* root) {↵
if (root == NULL)return 0;↵
int leftheight =diameterOfBinaryTresolve(root->left) + 1;↵
int rightheight =diameterOfBinaryTresolve(root->right) + 1;↵
mx = max(mx, leftheight + rightheight);↵
return max(leftheight, rightheight);↵
}↵
int diameterOfBinaryTree(TreeNode* root) {↵
solve(root);↵
return mx;↵
}↵
↵
};↵
~~~~~↵
↵
↵
Authors approach: same approach but different recursion implementation↵
↵
↵
~~~~~↵
class Solution {↵
public:↵
int maxdiadepth = 0;↵
↵
int dfs(TreeNode* root) {↵
if (root == NULL) return 0;↵
↵
int leftdepth = dfs(root->left);↵
int rightdepth = dfs(root->right);↵
↵
if (leftdepth + rightdepth > maxdiadepth) maxdiadepth = leftdepth + rightdepth;↵
return max(leftdepth + 1, rightdepth + 1);↵
}↵
↵
int diameterOfBinaryTree(TreeNode* root) {↵
dfs(root);↵
↵
return maxdiadepth;↵
}↵
};↵
~~~~~↵
↵
[Problem link](https://leetcode.com/problems/diameter-of-binary-tree/)↵
↵
interview problems from diferent In seven days My target is 300 ,please save my life :)↵
↵
I am trying to find diameter using recursion ,I am confused with recursion↵
↵
some of the test cases I tried I got correct answer at some point Integer overflow occured But Below author's solution was accepted with same data types↵
↵
My approach:↵
↵
For every node, length of longest path which pass it = MaxDepth of its left subtree + MaxDepth of its right subtree.↵
↵
My question is whats wrong with my implementation↵
↵
~~~~~↵
↵
class Solution {↵
public:↵
int mx = 0;↵
int solve(TreeNode* root) {↵
if (root == NULL)return 0;↵
int leftheight =
int rightheight =
mx = max(mx, leftheight + rightheight);↵
return max(leftheight, rightheight);↵
}↵
int diameterOfBinaryTree(TreeNode* root) {↵
solve(root);↵
return mx;↵
}↵
↵
};↵
~~~~~↵
↵
↵
Authors approach: same approach but different recursion implementation↵
↵
↵
~~~~~↵
class Solution {↵
public:↵
int maxdiadepth = 0;↵
↵
int dfs(TreeNode* root) {↵
if (root == NULL) return 0;↵
↵
int leftdepth = dfs(root->left);↵
int rightdepth = dfs(root->right);↵
↵
if (leftdepth + rightdepth > maxdiadepth) maxdiadepth = leftdepth + rightdepth;↵
return max(leftdepth + 1, rightdepth + 1);↵
}↵
↵
int diameterOfBinaryTree(TreeNode* root) {↵
dfs(root);↵
↵
return maxdiadepth;↵
}↵
};↵
~~~~~↵
↵
[Problem link](https://leetcode.com/problems/diameter-of-binary-tree/)↵
↵