• 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
    }
  • 相关阅读:
    new
    如何在win7上面安装python的包
    进程
    网络编程模块的使用
    面向对象基础与实例
    类与对象的属性与使用方法
    基础面向对象与面向过程
    RE模块垃圾回收机制
    常用函数模块
    thinkphp6 find_in_set使用实例
  • 原文地址:https://www.cnblogs.com/dingxiaoqiang/p/14635548.html
Copyright © 2020-2023  润新知