zoukankan      html  css  js  c++  java
  • [Algo] 141. Binary Tree Path Sum To Target III

    Given a binary tree in which each node contains an integer number. Determine if there exists a path (the path can only be from one node to itself or to any of its descendants), the sum of the numbers on the path is the given target number.

    Examples

        5

      /    

    2      11

         /    

        6     14

      /

     3

    If target = 17, There exists a path 11 + 6, the sum of the path is target.

    If target = 20, There exists a path 11 + 6 + 3, the sum of the path is target.

    If target = 10, There does not exist any paths sum of which is target.

    If target = 11, There exists a path only containing the node 11.

    How is the binary tree represented?

    We use the level order traversal sequence with a special symbol "#" denoting the null node.

    /**
     * public class TreeNode {
     *   public int key;
     *   public TreeNode left;
     *   public TreeNode right;
     *   public TreeNode(int key) {
     *     this.key = key;
     *   }
     * }
     */
    public class Solution {
      public boolean exist(TreeNode root, int target) {
        // Write your solution here
        Set<Integer> set = new HashSet<>();
        set.add(0);
        return helper(root, set, target, 0);
      }
    
      private boolean helper(TreeNode root, Set<Integer> set, int target, int prefixSum) {
        if (root == null) {
          return false;
        }
        int curSum = root.key + prefixSum;
        if (set.contains(curSum - target)) {
          return true;
        }
    
        boolean needRemoval = set.add(curSum);
        boolean left = helper(root.left, set, target, curSum);
        boolean right = helper(root.right, set, target, curSum);
        // it is possible to remove previous presum here, 
        // such as 0, pathsum = 0, cannot check pathsum from root after here
        if (needRemoval) {
          set.remove(curSum);
        }
        return left || right;
      } 
    }
  • 相关阅读:
    Finite Difference Method with Mathematica
    评论
    The Woman in Red Is Seen as a Threat by Other Wom
    Why Does Everyone Else Appear to Be Succeeding?
    The Sorrows of Young Werther
    【洛谷P5607】无力回天 NOI2017
    【YbtOJ#532】往事之树
    【YbtOJ#582】大收藏家
    【牛客Wannafly挑战赛23 F】计数
    【YbtOJ#573】后缀表达
  • 原文地址:https://www.cnblogs.com/xuanlu/p/12423533.html
Copyright © 2011-2022 走看看