leetcode-1372-Longest ZigZag Path in a Binary Tree
问题
Given a binary tree root
, 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 then move to the right child of the current node otherwise move to the left child.
- Change the direction from right to left or right to left.
- Repeat the second and third step 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.
Example 1:
1 | Input: root = [1,null,1,1,1,null,null,1,1,null,1,null,null,null,1,null,1] |
Example 2:
1 | Input: root = [1,1,1,null,1,null,null,1,1,null,1] |
Example 3:
1 | Input: root = [1] |
Constraints:
- Each tree has at most
50000
nodes.. - Each node’s value is between
[1, 100]
.
分析
注意dp可以有多个返回值,要对每个节点进行处理,回溯时在进行总和。
代码
1 | /** |
Author: Hatton.Liu
Link: http://hattonl.github.io/2020/03/12/leetcode-1372/
License: 知识共享署名-非商业性使用 4.0 国际许可协议