Longest Zig Zag Path In Binary Tree | Leetcode 1372. Longest ZigZag Path in a Binary Tree

preview_player
Показать описание


Рекомендации по теме
Комментарии
Автор

Most Easy slution

Note: just keep track to which direction you are returning. if returning to left then return right + 1 else left + 1

working code:

int helper(TreeNode* root, int& res, char dir) {

if (root == NULL) return 0;

int left = helper(root->left, res, 'L');
int right = helper(root->right, res, 'R');

res = max(res, max(left, right) + 1);
if (dir == 'L') return right + 1;
else return left + 1;
}
int longestZigZag(TreeNode* root) {
int res = 0;
char ch ='$';
helper(root, res, ch);
return res - 1;
}

mohdmudassir
Автор

code in c++
class Solution {
public:
int longestPath;

int dfs(TreeNode *root, bool isLeft, bool isRight)
{
if (!root)
return 0;

int leftVal = dfs(root->left, true, false);
int rightVal = dfs(root->right, false, true);

longestPath = max({longestPath, leftVal, rightVal});

if (isLeft)
return rightVal + 1;
return leftVal + 1;
}
int longestZigZag(TreeNode *root)
{
longestPath = 0;
dfs(root, false, false);
return longestPath;
}
};

wecan
Автор

This is cool : forward = 7 and backward = 6 .

jayshakti
Автор

Nice explanation sir....thanks for the video.

paragroy
Автор

Sir ek dry run end mein kardete toh kaafi clarity aajati.

AmanpreetsetiaRA
Автор

sir vaise concept toh samaj aagaya or faith wala sa kara toh sab badiya ha

par agar iska dry run karta hu toh dimag dard ho jaata ha ..

letsdoeverythinginoneweek
Автор

Sir web dev ka course kb continue hoga
Please sir continue kariye

vipinkumarmaurya
Автор

Can anyone please explain why we have not initialized maxLen by 0 not -1 like forward Slop and backwardSlop????

shivangsingh
Автор

Sir. Majority in an arary bhi kara dena please

coders
Автор

Pair name for class is misleading as its not a pair as such it holds 3 values

narendrakothamire
Автор

class Solution {
public:
// int finalans;
pair<int, int>res(TreeNode *r, int &finalans)
{
if(!r)
return {-1, -1};

pair<int, int>a=res(r->left, finalans);

pair<int, int>b=res(r->right, finalans);

pair<int, int>ans;
ans.first=1+a.second;

ans.second=1+b.first;

finalans=max(finalans, 1+(a.second, b.first));
// cout<<anst<<" ";

return ans;
}

int longestZigZag(TreeNode* root) {

int finalans=0;
res(root, finalans);
return finalans;

}
sir could you please check why this is giving wrong answer?

learner_
join shbcf.ru