用时:25min

其实是比较常规的DFS类型题目,之所以用这么久是因为对边界值的判断出了问题。

从 root 出发时, 因为root 是可能没有子节点的,所以 len 值 为 0

从子节点出发,因为已经判断完字节点,算作当前节点到下一节点已经走一条长度为 1 的边 , 所以是 1

var longestZigZag = function(root) {
    // true left false right    var max = 0    var dfs = function (node,flag,len) {
        max = Math.max(len,max)
        if (flag) {
            node.right && dfs(node.right,!flag,len + 1)
            node.left && dfs(node.left,flag,1)
        } else {
            node.left && dfs(node.left,!flag,len + 1)
            node.right && dfs(node.right,flag,1)
        }
    }
    dfs(root,true,0)
    dfs(root,false,0)
    return max
};