zoukankan      html  css  js  c++  java
  • LeetCode_437. Path Sum III

    437. Path Sum III

    Easy

    You are given a binary tree in which each node contains an integer value.

    Find the number of paths that sum to a given value.

    The path does not need to start or end at the root or a leaf, but it must go downwards (traveling only from parent nodes to child nodes).

    The tree has no more than 1,000 nodes and the values are in the range -1,000,000 to 1,000,000.

    Example:

    root = [10,5,-3,3,2,null,11,3,-2,null,1], sum = 8
    
          10
         /  
        5   -3
       /     
      3   2   11
     /    
    3  -2   1
    
    Return 3. The paths that sum to 8 are:
    
    1.  5 -> 3
    2.  5 -> 2 -> 1
    3. -3 -> 11
    package leetcode.easy;
    
    /**
     * Definition for a binary tree node. public class TreeNode { int val; TreeNode
     * left; TreeNode right; TreeNode(int x) { val = x; } }
     */
    public class PathSumIII {
    	int count = 0;
    
    	private void helper(TreeNode root, int sum) {
    		if (root == null) {
    			return;
    		}
    
    		if (root.val == sum) {
    			count++;
    		}
    
    		if (root.left != null) {
    			helper(root.left, sum - root.val);
    		}
    
    		if (root.right != null) {
    			helper(root.right, sum - root.val);
    		}
    	}
    
    	public int pathSum(TreeNode root, int sum) {
    		if (root == null) {
    			return count;
    		}
    		helper(root, sum);
    		if (root.left != null) {
    			pathSum(root.left, sum);
    		}
    		if (root.right != null) {
    			pathSum(root.right, sum);
    		}
    		return count;
    	}
    
    	@org.junit.Test
    	public void test() {
    		int sum = 8;
    		TreeNode tn11 = new TreeNode(10);
    		TreeNode tn21 = new TreeNode(5);
    		TreeNode tn22 = new TreeNode(-3);
    		TreeNode tn31 = new TreeNode(3);
    		TreeNode tn32 = new TreeNode(2);
    		TreeNode tn34 = new TreeNode(11);
    		TreeNode tn41 = new TreeNode(3);
    		TreeNode tn42 = new TreeNode(-2);
    		TreeNode tn44 = new TreeNode(1);
    		tn11.left = tn21;
    		tn11.right = tn22;
    
    		tn21.left = tn31;
    		tn21.right = tn32;
    		tn22.left = null;
    		tn22.right = tn34;
    
    		tn31.left = tn41;
    		tn31.right = tn42;
    		tn32.left = null;
    		tn32.right = tn44;
    		tn34.left = null;
    		tn34.right = null;
    
    		tn41.left = null;
    		tn41.right = null;
    		tn42.left = null;
    		tn42.right = null;
    		tn44.left = null;
    		tn44.right = null;
    		System.out.println(pathSum(tn11, sum));
    	}
    }
    
  • 相关阅读:
    grep 和vim用法
    【python】初识函数
    【python】 文件相关操作
    【python】基础数据类型相关知识点补充和深浅拷贝
    【python】is和==的区别以及encode()和decode()
    python中的字典以及相关操作
    python列表元祖以及range
    python基本数据类型
    python基础逻辑运算
    了解Python与安装Python解释器
  • 原文地址:https://www.cnblogs.com/denggelin/p/11948833.html
Copyright © 2011-2022 走看看