博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指offer——二叉树中和为某一值的路径
阅读量:5311 次
发布时间:2019-06-14

本文共 1587 字,大约阅读时间需要 5 分钟。

题目链接:输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)

 

解题思路:

路径问题一般用回溯法+递归偏多,当这条路径到底如果还没发现,就删除最后一个节点。

1 import java.util.ArrayList; 2 /** 3 public class TreeNode { 4     int val = 0; 5     TreeNode left = null; 6     TreeNode right = null; 7  8     public TreeNode(int val) { 9         this.val = val;10 11     }12 13 }14 */15 public class Solution {16     ArrayList
> res = new ArrayList<>();17 ArrayList
path = new ArrayList<>();18 public ArrayList
> FindPath(TreeNode root,int target) {19 if (root == null) {20 return res;21 }22 findPath(root, target);23 return res;24 }25 26 public void findPath(TreeNode root, int target) {27 //因为FindPath中和 下面程序中都进行了判null操作,root绝对不可能为 null28 path.add(root.val);29 //已经到达叶子节点,并且正好加出了target30 if (root.val == target && root.left == null && root.right == null) {31 //将该路径加入res结果集中32 res.add(new ArrayList(path));33 }34 //如果左子树非空,递归左子树35 if (root.left != null) {36 findPath(root.left, target - root.val);37 }38 //如果右子树非空,递归右子树39 if (root.right != null) {40 findPath(root.right, target - root.val);41 }42 //无论当前路径是否加出了target,必须去掉最后一个,然后返回父节点,去查找另一条路径,最终的path肯定为null43 path.remove(path.size() - 1);44 return;45 }46 }

 

转载于:https://www.cnblogs.com/wangyufeiaichiyu/p/10877796.html

你可能感兴趣的文章
java的二叉树树一层层输出,Java构造二叉树、树形结构先序遍历、中序遍历、后序遍历...
查看>>
php仿阿里巴巴,php实现的仿阿里巴巴实现同类产品翻页
查看>>
Node 中异常收集与监控
查看>>
Excel-基本操作
查看>>
面对问题,如何去分析?(分析套路)
查看>>
Excel-逻辑函数
查看>>
面对问题,如何去分析?(日报问题)
查看>>
数据分析-业务知识
查看>>
nodejs vs python
查看>>
poj-1410 Intersection
查看>>
Java多线程基础(一)
查看>>
TCP粘包拆包问题
查看>>
Java中Runnable和Thread的区别
查看>>
SQL Server中利用正则表达式替换字符串
查看>>
POJ 1015 Jury Compromise(双塔dp)
查看>>
论三星输入法的好坏
查看>>
Linux 终端连接工具 XShell v6.0.01 企业便携版
查看>>
JS写一个简单日历
查看>>
Python 发 邮件
查看>>
mysql忘记密码的解决办法
查看>>