zoukankan      html  css  js  c++  java
  • 剑指 Offer 34. 二叉树中和为某一值的路径

    剑指 Offer 34. 二叉树中和为某一值的路径

    地址:剑指 Offer 34. 二叉树中和为某一值的路径

    输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。

    示例:
    给定如下二叉树,以及目标和 sum = 22,

        5
       / 
      4   8
     /   / 
    11  13  4
    

    / /

    7 2 5 1
    返回:

    [
    [5,4,11,2],
    [5,8,4,5]
    ]

    
    
    /**
     * Definition for a binary tree node.
     * type TreeNode struct {
     *     Val int
     *     Left *TreeNode
     *     Right *TreeNode
     * }
     */ 
    func pathSum(root *TreeNode, sum int) [][]int {
        res := make([][]int, 0)
        path := make([]int, 0)
        if (root != nil) {
            dfs(root, sum, path, &res)
        }
        return res 
    }
    
    func dfs(root *TreeNode, sum int, path []int, res *[][]int) {
        path = append(path, root.Val)
        sum -= root.Val
        if root.Left == nil && root.Right == nil {
            if sum == 0 {
                validPath := make([]int, len(path))
                //注意对slice(引用类型)进行值copy
                copy(validPath, path)
                (*res) = append((*res), validPath)
            }
        } else {
            if root.Left != nil {dfs(root.Left, sum, path, res)}
            if root.Right != nil {dfs(root.Right, sum, path, res)}
        }
        path = path[0: len(path)-1]
    }
    
  • 相关阅读:
    bzoj 1087 状压dp
    HDU 5289 尺取
    HDU 1693 插头dp入门详解
    字符串操作
    河南省多校联萌(一)
    HDU 4815 概率dp,背包
    HDU4804 Campus Design (轮廓线DP)
    HDU 4828 逆元+catalan数
    HDU 5651 组合+逆元
    天才少年曹原的内心
  • 原文地址:https://www.cnblogs.com/ganshuoos/p/14253870.html
Copyright © 2011-2022 走看看