You are given the root
of a binary tree.
A ZigZag path for a binary tree is defined as follow:
Zigzag length is defined as the number of nodes visited – 1. (A single node has a length of 0).
Return the longest ZigZag path contained in that tree.
Example 1:
Input: root = [1,null,1,1,1,null,null,1,1,null,1,null,null,null,1] Output: 3 Explanation: Longest ZigZag path in blue nodes (right -> left -> right).
Example 2:
Input: root = [1,1,1,null,1,null,null,1,1,null,1] Output: 4 Explanation: Longest ZigZag path in blue nodes (left -> right -> left -> right).
Example 3:
Input: root = [1] Output: 0
Constraints:
[1, 5 * 104]
.1 <= Node.val <= 100
class Solution {
public:
int maxm=0;
void zigzag(TreeNode* root, bool right,int count)
{
if(!root)
{
maxm=max(maxm,count-1);
return;
}
if(!right) zigzag(root->right,true,count+1);
else zigzag(root->left,false,count+1);
}
void dfs(TreeNode*root)
{
if(root==NULL)return;
zigzag(root,true,0);
zigzag(root,false,0);
dfs(root->left);
dfs(root->right);
}
int longestZigZag(TreeNode* root) {
if(!root || (!root->left and !root->right))return 0;
dfs(root);
return maxm;
}
};
Office:- 660, Sector 14A, Vasundhara, Ghaziabad, Uttar Pradesh - 201012, India