二叉树中和为某一值得路径 java实现
2016-09-21 15:23
260 查看
本题来自《剑指offer》
路径为从根节点到叶节点一条路径,路径经过的各节点数值之和等于某一给定数值,则打印路径上的节点
因为需要打印满足条件的路径节点信息和各节点之和,需要栈记录经过的节点,和一个保存数值之和的变量
用前序遍历方法,可以首先访问节点,然后将节点入栈,并将数值和之前入栈的节点值相加
如果当前之和否满足给定值,判断当前节点是否叶节点,是则打印路径信息
判断节点左右孩子是否为空,递归调用
在调用完,返回时要将入栈的值出栈(此时栈中节点只到父节点),和变量也要变回调用之前的状态
路径为从根节点到叶节点一条路径,路径经过的各节点数值之和等于某一给定数值,则打印路径上的节点
因为需要打印满足条件的路径节点信息和各节点之和,需要栈记录经过的节点,和一个保存数值之和的变量
用前序遍历方法,可以首先访问节点,然后将节点入栈,并将数值和之前入栈的节点值相加
如果当前之和否满足给定值,判断当前节点是否叶节点,是则打印路径信息
判断节点左右孩子是否为空,递归调用
在调用完,返回时要将入栈的值出栈(此时栈中节点只到父节点),和变量也要变回调用之前的状态
//二叉树定义 class Btree { int value; Btree leftBtree; Btree rightBtree; } private Stack<Integer> stack = new Stack<Integer>(); public void FindPath(Btree node , int sum,int currSum){ boolean isLeaf; if(node == null) return; currSum += node.value; stack.push(node.value); isLeaf = node.leftBtree == null && node.rightBtree == null; if(currSum == sum && isLeaf){ System.out.println("Path:"); for(int val : stack){ System.out.println(val); } } if(node.leftBtree != null) FindPath(node.leftBtree, sum, currSum); if(node.rightBtree != null) FindPath(node.rightBtree, sum, currSum); currSum -= node.value; stack.pop(); }
相关文章推荐
- 二叉树中和为某一值的路径 java实现
- 剑指offer 面试题25 二叉树中和为某一值的路径-Java实现
- 在二叉树中找出和为某一值的所有路径-java实现
- 剑指offer 二叉树中和为某一值的路径 java实现
- 【剑指offer】二叉树中和为某一值得路径 java
- 二叉树中和为某一值得路径java
- 剑指offer----二叉树中和为某一值的路径----java实现
- 剑指offer--面试题25:二叉树中和为某一值的路径--Java实现
- 剑指Offer 面试题34:二叉树中和为某一值的路径 Java代码实现
- 二叉树中和为某一值的路径(Java实现)
- 求二叉树根节点到子节点和为某一值的所有路径(Java实现)
- 剑指Offer:面试题25——二叉树中和为某一值的路径(java实现)
- 剑指Offer 25题 二叉树中和为某一值的路径 Java
- Java分析:二叉树中和为某一值的路径
- 二叉树中何为某一值的路径实现
- 程序员面试题目总结--树(一)【重建二叉树、二叉树的深度、树的子结构、二叉树中和为某一值得路径、从上往下打印二叉树】
- 【剑指offer-Java版】25二叉树中和为某一值的路径
- 剑指Offer面试题25(Java版):二叉树中和为某一值的路径
- 剑指Offer(Java版):二叉树中和为某一值的路径
- java之二叉树和为某一值的路径