社区
Java SE
帖子详情
求树的递归算法
BlueSoftEye
2007-06-06 06:24:36
结构 nodes 是个二维数组,结构如下:
id parentId
=================================
001 -1
002 001
003 001
004 002
005 002
006 002
007 003
008 003
树形式为:
001-->002-->004
001-->002-->005
001-->002-->006
001-->003-->007
001-->003-->008
求递归算法遍历,要求有遍历路径
...全文
253
3
打赏
收藏
求树的递归算法
结构 nodes 是个二维数组,结构如下: id parentId ================================= 001 -1 002 001 003 001 004 002 005 002 006 002 007 003 008 003 树形式为: 001-->002-->004 001-->002-->005 001-->002-->006 001-->003-->007 001-->003-->008 求递归算法遍历,要求有遍历路径
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jjwkl
2007-06-06
打赏
举报
回复
楼主,看看数据结构吧.. 尤其是树的遍历的方式那章..
BlueSoftEye
2007-06-06
打赏
举报
回复
自己已搞定:
/**
* 对树状结构的一维切片的层次进行递归,递归路径中...
* @param sliceColumnAndParentId String[][] 所有节点
* @param rootValue String 根节点
* @param curSliceColumn String 当前节点,第一次运行时,当前节点=根节点
* @param lastBuffer StringBuffer 递归所需的栈的缓存
* @param list List 返回结果
*/
private static void RecursionSlice(final String[][] sliceColumnAndParentId,String rootValue,String curSliceColumn,StringBuffer lastBuffer,List list) {
String[] sons = searchSonSlice(curSliceColumn, sliceColumnAndParentId);
StringBuffer sb=new StringBuffer();
if(curSliceColumn.equalsIgnoreCase(rootValue)){
lastBuffer.append(rootValue).append(";");
}
if (sons.length > 0) {
for (int i = 0; i < sons.length; i++) {
sb.setLength(0);
sb.append(lastBuffer);
curSliceColumn = sons[i];
sb.append(curSliceColumn);
sb.append(";");
RecursionSlice(sliceColumnAndParentId,rootValue,curSliceColumn,sb,list);
}
}
else {
list.add(lastBuffer.toString());
}
}
yeliming
2007-06-06
打赏
举报
回复
你要怎么遍历?深度优先还是广度优先?前序还是后序?
算法导论(正宗中文第三版)3-1
在有关算法的书中,有一些叙述非常严谨,但不够全面;另一些涉及了大量的题材,但又缺乏严谨性。本书将严谨性和全面性融为一体,深入讨论各类算法,并着力使这些算法的设计和分析能为各个层次的读者接受。全书各章自成体系,可以作为独立的学习单元;算法以英语和伪代码的形式描述,具备初步程序设计经验的人就能看懂;说明和解释力求浅显易懂,不失深度和数学严谨性。 《算法导论(原书第3版)》选材经典、内容丰富、结构合理、逻辑清晰,对本科生的数据结构课程和研究生的算法课程都是非常实用的教材,在it专业人员的职业生涯中,本书也是一本案头必备的参考书或工程实践手册。 第3版的主要变化: 新增了van emde boas树和多线程算法,并且将矩阵基础移至附录。 修订了递归式(现在称为“分治策略”)那一章的内容,更广泛地覆盖分治法。 移除两章很少讲授的内容:二项堆和排序网络。 修订了动态规划和贪心算法相关内容。 流网络相关材料现在基于边上的全部流。 由于关于矩阵基础和strassen算法的材料移到了其他章,矩阵运算这一章的内容所占篇幅更小。 修改了对knuth-morris-pratt字符串匹配算法的讨论。 新增100道练习和28道思考题,还更新并补充了参考文献。
工作中常用的关于树的
递归算法
递归介绍
递归算法
在计算机科学中是指一种通过重复将问题分解为同类的子问题而解决问题的方法。众所周知的数据结构的快速排序算法就是基于递归实现的。递归这是一种很重要的算法思想,在C语言,Java中普遍应用,大学期间参加算法竞赛
递归算法
在所难免。 根据我个人的理解,一个递归程序就是方法自身调用自身,一个递归函数中主要包含三个部分,第一递归出口,第二执行的逻辑代码,第三子问题递归执行。 案例介绍 递归获取菜单树 第一种: stream流实现(推荐) /** * stream流获取菜单树
三种方法求
递归算法
的时间复杂度(递推,master定理,递归树)
三种方法: 递推方法求
递归算法
的时间复杂性 Master定理方法求
递归算法
时间复杂性 递归树求解递归方程 1.递推方法求
递归算法
的时间复杂度 我们先来看一个经典的案例,汉诺塔问题 汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,任何时候,在小圆盘上都不能放大圆盘,且在三根柱子之间一次只能移动一个圆盘。问应该如
递归算法
(图文详解)
递归算法
说简单点即就是自身程序的调用,若你掌握递归相应逻辑,递归之时你便可以起飞!!!
递归与非
递归算法
一、原因:
递归算法
一般效率更低;有些程序语言不支持递归。 二、方法:将
递归算法
转换为非
递归算法
有两种方法,一种是直接求值,不需要回溯;另一种是不能直接求值,需要回溯。前者使用一些变量保存中间结果,称为直接转换法;后者使用栈保存中间结果,称为间接转换法,下面分别讨论这两种方法。 直接转换法 直接转换法通常用来消除尾递归和单向递归,将递归结构用循环结构来替代。 尾递归是指在
递归算法
中,递归调用语句只有一个,而且是处在算法的最后。例如求阶乘的
递归算法
: long fact(int n) { if(n0)
Java SE
62,614
社区成员
307,318
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章