二叉树中值和为某一值的路径:类似图的深度优先遍历

对于此类问题一直有点弱,多想几次就OK了–主要是不熟悉,毕竟代码写出来之后一看就明白,但是自己想的时候还是有点困难

public class _Q25 {public void FindPathInTree(BinaryTreeNode<Integer> tree, int expectedSum){if(tree == null) return;Vector<BinaryTreeNode<Integer>> path = new Vector<>();int curSum = 0;FindAndPrintPath(tree, expectedSum, curSum, path);}private void FindAndPrintPath(BinaryTreeNode<Integer> tree, int expectedSum, int curSum, Vector<BinaryTreeNode<Integer>> path){if(tree == null) return;curSum = curSum + tree.value;path.add(tree);if(curSum == expectedSum && tree.leftChild == null && tree.rightChild == null){for(int i=0; i<path.size(); i++){System.out.print(path.get(i).value + " ");}System.out.println();}if(tree.leftChild != null) FindAndPrintPath(tree.leftChild, expectedSum, curSum, path);if(tree.rightChild != null) FindAndPrintPath(tree.rightChild, expectedSum, curSum, path);path.remove(path.size() - 1); // 回溯}}

测试代码:

public class _Q25Test extends TestCase {_Q25 printTreePath = new _Q25();public void test(){BinaryTreeNode<Integer> root = new BinaryTreeNode<>();BinaryTreeNode<Integer> node1 = new BinaryTreeNode<>();BinaryTreeNode<Integer> node2 = new BinaryTreeNode<>();BinaryTreeNode<Integer> node3 = new BinaryTreeNode<>();BinaryTreeNode<Integer> node4 = new BinaryTreeNode<>();root.value = 10;node1.value = 5;node2.value = 12;node3.value = 4;node4.value = 7;root.leftChild = node1;root.rightChild = node2;node1.leftChild = node3;node1.rightChild = node4;node2.leftChild = null; node2.rightChild = null;node3.leftChild = null; node3.rightChild = null;node4.leftChild = null; node4.rightChild = null;printTreePath.FindPathInTree(root, 22);}}

【剑指offer-Java版】25二叉树中和为某一值的路径相关推荐

  1. 剑指offer(C++)-JZ34:二叉树中和为某一值的路径(二)(数据结构-树)

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 输入一颗二叉树的根节点root和一个整数expectNumber,找出二叉树中结点值 ...

  2. 剑指offer(C++)-JZ82:二叉树中和为某一值的路径(一)(数据结构-树)

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 给定一个二叉树root和一个值 sum ,判断是否有从根节点到叶子节点的节点值之和等 ...

  3. 剑指offer面试题34. 二叉树中和为某一值的路径(先序遍历)(回溯)

    题目描述 输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径.从树的根节点开始往下一直到叶节点所经过的节点形成一条路径. 思路 详见链接 代码 class Solution:def ...

  4. 剑指offer java版 test3—从尾到头打印链表

    标题:剑指offer java版 test3-从尾到头打印链表 题目:输入一个链表,按链表从尾到头的顺序返回一个ArrayList. 解答:知识不够全面,用ArrayList做的 但是看到大佬们还可以 ...

  5. 剑指offer java版(三)

    二叉搜索树的后序遍历 问题描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 解题思路 对于后序遍历来说, ...

  6. 剑指offer java版 test42—找出和为S的两个数,左右夹逼法(双指针法)

    前言:受上一题的启发,这题自己也编出来了.在碰到这种有序数列的时候,经常会用到双指针法,一个指左边,一个指右边,然后依照规则移动,增加或缩小范围.很实用. 题目: 输入一个递增排序的数组和一个数字S, ...

  7. 剑指offer没有java版吗_剑指Offer(Java版) 持续更新中

    面试题2 单例(之前有整理,略) 面试题3 二维数组中的查找 public boolean find(int target, int [][] array) { boolean found = fal ...

  8. 剑指offer java版(一)

    二维数组中的查找 问题描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数 ...

  9. 【重点】剑指offer——面试题25:二叉树中和为某一值的路径

    剑指offer--面试题25:二叉树中和为某一值的路径 参考网址:https://www.nowcoder.com/profile/5488508/codeBookDetail?submissionI ...

最新文章

  1. Web性能测试需监控的IIS性能指标
  2. Universal-imageLoader缓存图片加载
  3. GPS服务端解析程序编写日记之--vs2010中多种语言开发及调试的若干注意事项
  4. Web前端开发人员和设计师必读文章推荐【系列六】
  5. 微服务微应用的安全测试_提高微服务安全性的11个方法
  6. 如何在Java中将字节数组转换为InputStream和OutputStream
  7. squid代理简单应用
  8. 根据一个单词找所有的兄弟单词的思想如何处理
  9. 【Unity3D日常BUG】Unity3D中使用高亮插件Highlighting出现的错误:Parameter name:shader
  10. 瑞星、360、金山卫士、BaiduPlayer、SOSO开聚会,电脑吃不消了
  11. Java实现word转HTML
  12. 推荐系统之ALS算法详解
  13. Apache Flink 在双十一流量洪峰下的最佳实践
  14. C4D中常用材质的创建与赋予
  15. java中替换的快捷键是什么_idea替换快捷键,批量处理对象的操作
  16. 队列——数据结构严蔚敏C语言版
  17. 前端大屏页面布局经验
  18. 【文献解读】RNAi技术在油菜基因功能研究中的应用
  19. DataBinding找不到符号,import xxx.xxx.ActivityxxxBindingImpl
  20. Linux用root强制踢掉已登录用户

热门文章

  1. Win10:你需要来自XXX的权限才能对此文件夹进行更改
  2. C++知识点12——构造函数初步
  3. 1.MySQL基本体系
  4. c#split方法拆分为数据_Dexplot:基于pandas,比matplotlib更简单的数据可视化和数据分析工具...
  5. 一起来学习 WebRTC (篇一)| 掘金技术征文
  6. Centos下运行gpg --gen-key生成key时出现卡住解决方案笔记
  7. 死而复生?RethinkDB宣布进入Linux基金会!
  8. 精确到秒的JQuery日期控件,jquery日历插件,jquery日期插件
  9. 数据结构和算法-001 数组
  10. nfs自动挂载报错及解决方法