zoukankan      html  css  js  c++  java
  • 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:

    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
  • 相关阅读:
    Docker Registry 管理镜像
    Dockerfile 构建镜像
    制作docker镜像
    docker 使用及基本命令
    centos7 安装 docker
    spring-boot-devtools 热部署
    mysql库复制
    windows下安装和设置gradle
    springboot项目搭建
    下载和安装
  • 原文地址:https://www.cnblogs.com/wentiliangkaihua/p/12466820.html
Copyright © 2011-2022 走看看