剑指offer-面试题25:二叉树中和为某一值的路径
来源:互联网 发布:java excel预览 编辑:程序博客网 时间:2024/06/10 17:59
题目
输入一棵二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。二叉树的定义如下:
class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } public TreeNode() { // TODO Auto-generated constructor stub }
解
package Chapter4;import java.util.Stack;public class FindPathInBinaryTree { public void findPath(TreeNode root,int expectedSum){ if(root==null) return; Stack<Integer> path=new Stack<Integer>(); int currentSum=0; findPath2(root,expectedSum,path,currentSum); } public void findPath2(TreeNode root, int expectedSum, Stack<Integer> path, int currentSum) { // TODO Auto-generated method stub currentSum+=root.val; path.push(root.val); //如果是叶结点,并且路径上结点的和等于输入的值 //打印出这条路径 boolean isLeaf=root.left==null&&root.right==null; if(currentSum==expectedSum&&isLeaf){ System.out.print("A path is found:"); for(Integer i:path){ System.out.print(i+" "); } System.out.println(""); } //如果不是叶结点,则遍历它的子结点 if(root.left!=null){ findPath2(root.left,expectedSum,path,currentSum); } if(root.right!=null){ findPath2(root.right,expectedSum,path,currentSum); } //在返回到父结点之前,在路径上删除当前结点 currentSum-=root.val; path.pop(); } public static void main(String[] args) { // TODO Auto-generated method stub TreeNode root=new TreeNode(10); TreeNode Node5=new TreeNode(5); TreeNode Node12=new TreeNode(12); TreeNode Node4=new TreeNode(4); TreeNode Node7=new TreeNode(7); root.left=Node5; root.right=Node12; Node5.left=Node4; Node5.right=Node7; FindPathInBinaryTree fP=new FindPathInBinaryTree(); fP.findPath(root, 22); }}class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } public TreeNode() { // TODO Auto-generated constructor stub }}
0 0
- 【剑指offer】面试题25:二叉树中和为某一值的路径
- 剑指Offer:面试题25 二叉树中和为某一值的路径
- 剑指offer 面试题25 求二叉树中和为某一路径的值
- 《剑指Offer》面试题25:二叉树中和为某一值的路径
- 剑指offer 面试题25—二叉树中和为某一值的路径
- 剑指offer--面试题25:二叉树中和为某一值的路径--Java实现
- 【剑指Offer学习】【面试题25:二叉树中和为某一值的路径】
- 剑指Offer面试题25(Java版):二叉树中和为某一值的路径
- 剑指offer面试题25-二叉树中和为某一值的路径
- 剑指offer-面试题25:二叉树中和为某一值的路径
- 剑指offer之面试题25:二叉树中和为某一值的路径
- 剑指Offer----面试题25:二叉树中和为某一值的路径
- 剑指offer-面试题25:二叉树中和为某一值的路径
- 剑指offer面试题25:二叉树中和为某一值的路径
- 【剑指offer】面试题25:二叉树中和为某一值的路径
- 剑指offer--面试题25: 二叉树中和为某一值的路径
- 剑指Offer面试题25(Java版):二叉树中和为某一值的路径
- 剑指offer——面试题25:二叉树中和为某一值的路径
- Grunt Gruntfile.js uglify concat watch 基本配置
- 一个适合小公司用的开源数据管道工具
- Chrome 的 开发者工具(F12、devtools)开启缓慢解决方法
- Oracle VM VirtualBox 安装ubuntu系统后如何设置文件夹共享
- Thread(线程),run(),start()
- 剑指offer-面试题25:二叉树中和为某一值的路径
- 谈Runtime机制和使用的整体化梳理
- Objective-C实现一个基于数组下标[index]和字典[@"key"]的访问模式
- Ubuntu14.04 安装Eclipse
- 【CSS3】文字与字体--慕课网【学习总结】
- phpStudy设置301重定向
- PHP Apache Mysql的配置搭建及多站点配置
- Android SurfaceView 学习笔记(二)
- Knowledge-Based Textual Inference via Parse-Tree Transformations 翻译