美文网首页
剑指 Offer 34 二叉树中和为某一值的路径

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

作者: itbird01 | 来源:发表于2021-12-25 00:06 被阅读0次
题目.png

题意:给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。
叶子节点 是指没有子节点的节点。

解题思路

解法1:DFS
1.我们可以采用深度优先搜索的方式,枚举每一条从根节点到叶子节点的路径。当我们遍历到叶子节点,且此时路径和恰为目标和时,我们就找到了一条满足条件的路径

DFS伪代码:

 public void dfs(原数据, 目标) {
        if (终止条件) {
            return;
        }

        /*
         * 临时标记数据
         */
        /*
         * 是否为结果数据
         */
        /*
         * 遍历其他路径,针对于二叉树,就是左右子树,针对于图,则是四个方向
         */
        /*
         * 回退数据
         */
    }

解题遇到的问题

后续需要总结学习的知识点

##解法1
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

class Solution {
    List<List<Integer>> ans = new ArrayList<List<Integer>>();
    LinkedList<Integer> temp = new LinkedList<Integer>();
    public List<List<Integer>> pathSum(TreeNode root, int target) {
        dfs(root, target);
        return ans;
    }

    public void dfs(TreeNode root, int target) {
        if (root == null) {
            return;
        }

        temp.add(root.val);
        if (root.left == null && root.right == null && target == root.val) {
            ans.add(new ArrayList<Integer>(temp));
        }
        dfs(root.left, target - root.val);
        dfs(root.right, target - root.val);
        temp.removeLast();
    }

    public class TreeNode {
        int val;
        TreeNode left;
        TreeNode right;
        TreeNode(int x) {
            val = x;
        }
    }
}

相关文章

网友评论

      本文标题:剑指 Offer 34 二叉树中和为某一值的路径

      本文链接:https://www.haomeiwen.com/subject/hknlqrtx.html