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
    }
  • 相关阅读:
    HTML、CSS、JS 复习——序
    HTML + CSS短标题(二,三,四文字长度)两端对齐的方式
    Supper关键字
    java的重写
    java重载
    Java继承
    JAVA访问权限控制
    (转)java类初始化顺序
    Java 数组和集合
    Java 方法签名
  • 原文地址:https://www.cnblogs.com/dingxiaoqiang/p/14635548.html
Copyright © 2011-2022 走看看