zoukankan      html  css  js  c++  java
  • JZ24 二叉树中和为某一值的路径

    二叉树中和为某一值的路径

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

     解题思路: 递归回溯的解法

    1.按照前序方式去遍历(根,左,右)
    2.递归处理:

    • 忽略空节点
    • 递归过程中去修改sum的结果,一旦发现等于0同时是根节点则返回结果
    • 回溯就是每次先插入当前节点,递归完成后删除
     
    func helper(root *TreeNode ,  expectNumber int, arr []int, ret *[][]int) {
        if root == nil {
            return
        }
        arr = append(arr, root.Val)
        if root.Val == expectNumber && root.Left == nil && root.Right == nil {
            tmp := make([]int, len(arr))
            copy(tmp, arr)
            *ret = append(*ret, tmp)
        }
        helper(root.Left, expectNumber - root.Val, arr, ret)
        helper(root.Right, expectNumber - root.Val, arr, ret)
        
        arr = arr[:len(arr)-1]
    }
    
    func pathSum( root *TreeNode,  expectNumber int ) [][]int {
        if root == nil {
            return nil
        }
        var ret [][]int
        helper(root, expectNumber, []int{}, &ret)
        return ret
    }
  • 相关阅读:
    JSON 使用
    JSON 语法
    JSON 简介
    什么是 JSON ?
    PHP 数组排序
    PHP 数组
    swan.after
    Page.after
    App.after
    AOP说明
  • 原文地址:https://www.cnblogs.com/dingxiaoqiang/p/14635548.html
Copyright © 2011-2022 走看看