码迷,mamicode.com
首页 > 其他好文 > 详细

1372. Longest ZigZag Path in a Binary Tree

时间:2020-03-12 09:26:04      阅读:76      评论:0      收藏:0      [点我收藏+]

标签:color   ==   set   fine   The   als   png   most   -o   

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:

技术图片

Input: root = [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:

技术图片

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:

  • Each tree has at most 50000 nodes..
  • Each node‘s value is between [1, 100].
    class Solution {
        int maxStep = 0;
        public int longestZigZag(TreeNode root) {
            dfs(root, true, 0);
            dfs(root, false, 0);
            return maxStep;
        }
        private void dfs(TreeNode root, boolean isLeft, int step) {
            if (root == null) return;
            maxStep = Math.max(maxStep, step); // update max step sofar
            if (isLeft) {
                dfs(root.left, false, step + 1); // keep going from root to left
                dfs(root.right, true, 1); // restart going from root to right
            } else {
                dfs(root.right, true, step + 1); // keep going from root to right
                dfs(root.left, false, 1); // restart going from root to left
            }
        }
    }

    噫 DFS好,用一个boolean控制向左向右,二叉树还是太菜了我

  • https://leetcode.com/problems/longest-zigzag-path-in-a-binary-tree/discuss/534418/Java-DFS-Solution-with-comment-O(N)-Clean-code

1372. Longest ZigZag Path in a Binary Tree

标签:color   ==   set   fine   The   als   png   most   -o   

原文地址:https://www.cnblogs.com/wentiliangkaihua/p/12466820.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!