剑指offerNo24. 二叉树中和为某一值的路径(Java)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了剑指offerNo24. 二叉树中和为某一值的路径(Java),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1623字,纯文字阅读大概需要3分钟。
内容图文
![剑指offerNo24. 二叉树中和为某一值的路径(Java)](/upload/InfoBanner/zyjiaocheng/643/f6d0d5bfad9640b286a13c37e62eba5c.jpg)
题目描述:
输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)
比如上述: 输入的整数为 22,则可打印的路径有(10,5,7)和(10,12)
思路:
整个过程利用深度优先遍历DFS。
代码:
package offer;
import org.omg.PortableInterceptor.INACTIVE;
import sun.reflect.generics.tree.Tree;
import java.util.ArrayList;
import java.util.Stack;
public class TestNo24 {
static class TreeNode{
int val;
TreeNode left;
TreeNode right;
TreeNode(int val){
this.val = val;
}
}
public static void main(String[] args) {
TreeNode root = new TreeNode(10);
TreeNode node1 = new TreeNode(5);
TreeNode node2 = new TreeNode(12);
TreeNode node3 = new TreeNode(4);
TreeNode node4 = new TreeNode(7);
root.left = node1;
root.right = node2;
node1.left = node3;
node1.right = node4;
System.out.println(new TestNo24().FindPath(root,22));
}
ArrayList<ArrayList<Integer>> ret = new ArrayList<>();
public ArrayList<ArrayList<Integer>> FindPath(TreeNode root,int target) {
if(root == null ){
return ret;
}
//递归调用
findPath(root,target,new ArrayList<>());
return ret;
}
public void findPath(TreeNode root, int target, ArrayList<Integer> cache){
if(root == null){
return;
}
int val = root.val;
int remainVal = target-val;
//当前节点列表
cache.add(val);
if(remainVal == 0 && root.left == null && root.right == null){
ret.add(new ArrayList<>(cache));
}
//处理叶子节点
findPath(root.left,remainVal,cache);
findPath(root.right,remainVal,cache);
//回溯到上一个节点
cache.remove(cache.size()-1);
}
}
胡别致 发布了61 篇原创文章 · 获赞 11 · 访问量 4001 私信 关注
内容总结
以上是互联网集市为您收集整理的剑指offerNo24. 二叉树中和为某一值的路径(Java)全部内容,希望文章能够帮你解决剑指offerNo24. 二叉树中和为某一值的路径(Java)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。