Hard
A ZigZag path alternates direction (left, right, left, ...) at each step. Its length is the number of edges visited. Given the root of a binary tree, return the length of the longest ZigZag path contained in it.
Input: root = [1,null,1,1,1,null,null,1,1,null,1,null,null,null,1,null,1] Output: 3
Input: root = [1,1,1,null,1,null,null,1,1,null,1] Output: 4
Input: root = [1] Output: 0