vlambda博客
学习文章列表

【剑指offer】24 二叉树中和为某一值的路径


- 题目描述

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

- 解题思路

先保存根节点,然后分别递归在左右子树中找目标值,若找到即到达叶子节点,打印路径中的值

- Java实现

import java.util.ArrayList;/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null;  public TreeNode(int val) { this.val = val;  } }*/public class Solution { private ArrayList<ArrayList<Integer>> ret = new ArrayList<>();  public ArrayList<ArrayList<Integer>> FindPath(TreeNode root,int target) { backtracking(root, target, new ArrayList<>()); return ret; }  private void backtracking(TreeNode node, int target, ArrayList<Integer> path){ if(node == null) return; path.add(node.val); target -= node.val; if (target == 0 && node.left == null && node.right == null){ ret.add(new ArrayList<>(path)); } else { backtracking(node.left, target, path); backtracking(node.right, target, path); } path.remove(path.size() - 1); }}