本文共 1386 字,大约阅读时间需要 4 分钟。
输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。
示例:
给定如下二叉树,以及目标和 sum = 22,来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/er-cha-shu-zhong-he-wei-mou-yi-zhi-de-lu-jing-lcof 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public List
> pathSum(TreeNode root, int sum) { Op op = new Op(); op.dfs(root,sum); return op.list; } static class Op{ TreeNode root; List
> list = new LinkedList<>(); LinkedList tail = new LinkedList<>(); void dfs(TreeNode root,int sum) { if(root == null) return; tail.offer(root.val); if(isEnd(root) && root.val == sum) { //深拷贝 list.add( new LinkedList<>(tail)); } if(root.left !=null) { dfs(root.left, sum-root.val); tail.pollLast(); } if(root.right!=null) { dfs(root.right,sum-root.val); tail.pollLast(); } } boolean isEnd(TreeNode root) { return root.left==null && root.right==null; } }}