To solve this problem, you'll have to open it on the computer

Longest ZigZag Path in a Binary Tree

Tree
medium
Score: 40

You are given the root of a binary tree.

A ZigZag path for a binary tree is defined as follow:

  • Choose any node in the binary tree and a direction (right or left).
  • If the current direction is right, move to the right child of the current node; otherwise, move to the left child.
  • Change the direction from right to left or from left to right.
  • Repeat the second and third steps until you can’t move in the tree.

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.

Class TreeNode:
    val (int)
    left (TreeNode)
    right (TreeNode)

Input Format

First Parameter - TreeNode root

Output Format

Return the number.

Example 1:

img

Input:      
    1 null 1 1 1 null null 1 1 null 1 null null null 1 null 1

Output: 3

Explanation:   
    Longest ZigZag path in blue nodes (right -> left -> right).

Example 2:

img

Input:   
    root = 1 1 1 null 1 null null 1 1 null 1

Output: 4

Constraints

  • The number of nodes in the tree is in the range [1, 5 * 104].
  • 1 <= Node.val <= 100
  • Expected Time Complexity : O(n)
  • Expected Space Complexity : O(n)
Submit code to see the your result here