剑指offer 25 题 ,java 递归实现
来源:互联网 发布:乐视电视网络连接失败 编辑:程序博客网 时间:2024/05/16 19:08
package shuati;import java.util.Stack;import java.util.Vector;/** * 剑指 offer 25 题,递归实现 * Created by cheng on 2017/10/11. */class BinaryTreeNode { int value; BinaryTreeNode left; BinaryTreeNode right; BinaryTreeNode(int value) { this.value = value; }}public class BianLiShuDengYuGeiDingHe { public static void main(String[] args) { // 构造一颗二叉树 BinaryTreeNode a = new BinaryTreeNode(10); BinaryTreeNode b = new BinaryTreeNode(5); BinaryTreeNode c = new BinaryTreeNode(8); BinaryTreeNode d = new BinaryTreeNode(4); BinaryTreeNode e = new BinaryTreeNode(7); BinaryTreeNode f = new BinaryTreeNode(4); BinaryTreeNode g = new BinaryTreeNode(2); BinaryTreeNode h = new BinaryTreeNode(1); BinaryTreeNode i = new BinaryTreeNode(3); BinaryTreeNode j = new BinaryTreeNode(2); BinaryTreeNode k = new BinaryTreeNode(1); BinaryTreeNode l = new BinaryTreeNode(2); BinaryTreeNode m = new BinaryTreeNode(1); a.left = b; a.right = c; b.left = d; b.right = e; c.left = f; c.right = g; d.left = h; d.right = i; g.left = j; g.right = k; h.right = l; l.right = m; // 用来保存 递归调用走过的路径 Stack stack = new Stack(); new BianLiShuDengYuGeiDingHe().resolve(0, 22, a, stack); } /** * 打印满足条件的路径,递归实现 * * @param value 记录遍历到当前节点时,节点值的和 * @param valve 要求满足的值,示例中为 22 * @param node 当前的节点 * @param stack 记录走到该节点时,所有经过的路径,方便打印路径 */ public void resolve(int value, int valve, BinaryTreeNode node, Stack<BinaryTreeNode> stack) { // node 值为空,直接返回 if (node == null) { return; } // 加上当前节点的值,并把当前节点放到栈中 value += node.value; stack.add(node); // 如果此时的值已经大于了所要求的值,则返回 if (value > valve) { stack.pop(); return; } // 正好满足条件时,值相等,并且也是叶子节点,打印出遍历到的节点值 if (value == valve && node.right == null && node.left == null) { for (BinaryTreeNode i : stack) { System.out.print(i.value + " "); } System.out.println(); stack.pop(); return; } // 递归左子树 resolve(value, valve, node.left, stack); // 递归右子树 resolve(value, valve, node.right, stack); stack.pop(); }}
阅读全文
0 0
- 剑指offer 25 题 ,java 递归实现
- 剑指Offer 面试题25:合并两个排序的链表(递归+非递归) Java代码实现
- 剑指offer之求二叉树的深度(非递归的层次遍历)Java实现
- 剑指Offer面试算法题Java实现
- 剑指Offer第五题(Java实现)
- 剑指Offer第七题(Java实现)
- (剑指offer)JAVA实现
- 剑指offer(Java实现)
- 《剑指offer》JAVA编程实现
- 剑指offer题目java实现
- 剑指offer:用递归写23题
- 剑指Offer:递归问题
- 剑指offer--循环递归
- 剑指offer系列-T24_1二叉树后序排序递归实现
- 剑指offer学习笔记(Java实现)(21-25)
- 剑指Offer系列---(18)反转链表(递归与非递归实现)
- 剑指Offer——编程题的Java实现
- 重构二叉树,java实现,剑指offer原题
- C# 破解 Reflector8.5
- C# 文件上传
- ASP.NET 程序发布详细过程
- java类集---SortedSet接口
- ASP.NET 页面之间传值的几种方式
- 剑指offer 25 题 ,java 递归实现
- HttpClient总结一之基本使用
- 【Google浏览器系列】之google Chrome浏览器(理论篇)
- 【Google浏览器系列】之Google Chrome浏览器(操作篇)(上)
- 用python实现插入排序
- 随笔2
- JavaScript数组操作
- 【Google浏览器系列】之Google Chrome浏览器(操作篇)(下)
- 勒索安全防护