社区
数据结构与算法
帖子详情
遍历问题
williamf
2001-07-10 08:50:31
现在有树的前序,中序,求他的后序遍历?
...全文
113
4
打赏
收藏
遍历问题
现在有树的前序,中序,求他的后序遍历?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sumtec
2001-07-11
打赏
举报
回复
用前序和中序去建树,在遍历生成后序。
1。前序的第一个节电便是根节点
对于前序中第n个节点:
2。第n+1个是左子树或右子树。(也可能没有)
查中序遍厉,若前序的第n+1个节点在第n个节点的左边,说明有左子树。
如此对付所有左子树直至没有左子树。
3。查中序遍厉,
a.第n个节点是其父节点的左孩子则:第n+1个节点在第n个节点及第n个节点的父节点之间,说明有右子树。
b.否则:第n+1个节点在其父节点在中序遍厉中的右边,说明有右子树.
若有,对第n+1个节点重复第二步。
若鹜,沿已经建好的树退到第n个节点的父节点用第三步的方法,判断第n+1个节点。
例:
a
b c
d e f g
前序:abdecfg
中序:dbeafcg
step 1: abdecfg dbeafcg a
^* * ^ b
step 2: abdecfg dbeafcg a
^* *^ b
d
step 3: abdecfg dbeafcg a
^* ^ * b
d
So, e is not the left child of node d.
step 4: abdecfg dbeafcg a
^* ^!* b
d
E is not between d and d's father b. So e is not the right child of node d.
step 5: abdecfg dbeafcg a
^ * ^*! b
d e
E is between b and b's father a. So e is the right child of node d.
step 6: abdecfg dbeafcg a
^* ^ * b
d e
step 7: abdecfg dbeafcg a
^* ^! * b
d e
step 8: abdecfg dbeafcg a
^ * ^ * b
d e
step 9: abdecfg dbeafcg a
^ * ^ ! * b
d e
step 10: abdecfg dbeafcg a
^ * ^ * b c
d e
step 11: abdecfg dbeafcg a
^* *^ b c
d e f
step 12: abdecfg dbeafcg a
^* ^ * b c
d e f
step 13: abdecfg dbeafcg a
^* ^!* b c
d e f
step 14: abdecfg dbeafcg a
^ * ^!* b c
d e f
step 15: abdecfg dbeafcg a
^ * ^* b c
d e f g
后续遍厉不用我说了吧?
williamf
2001-07-11
打赏
举报
回复
我怎么给你们家分呢
anjun
2001-07-11
打赏
举报
回复
template<class Type>void Tree<Type>::PostOrder()
{
if(!IsEmpty())
{
TreeNode<Type>*p=current;//保存当前指针
int i=FindChild();//找第一棵子树
while(i){PostOrder();i=NextSibling();}//后跟遍历所有子树
current=p; visit();//恢复当前指针,最后访问根结点
}
}
树使用左子女右兄弟表示法
iamxia
2001-07-10
打赏
举报
回复
思考...
二叉树
遍历
问题
二叉树
遍历
问题
二叉树
遍历
问题
二叉树
遍历
问题
二叉树
遍历
问题
二叉树
遍历
问题
二叉树
遍历
问题
二叉树
遍历
问题
二叉树
遍历
问题
二叉树
遍历
问题
二叉树
遍历
问题
二叉树
遍历
问题
二叉树
遍历
问题
二叉树
遍历
问题
二叉树
遍历
问题
二叉树
遍历
问题
二叉树
遍历
问题
二叉树
遍历
问题
二叉树
遍历
问题
二叉树
遍历
问题
二叉树
遍历
问题
二叉树
遍历
问题
二叉树
遍历
问题
二叉树
遍历
问题
二叉树
遍历
问题
二叉树
遍历
问题
二叉树
遍历
问题
二叉树
遍历
问题
二叉树
遍历
问题
整理
二叉树
遍历
问题
整理 一、知二叉树先序和中序
遍历
求后序
遍历
方一、直接递归找后序
遍历
分析: 知道二叉树的先序和中序
遍历
,求其后序
遍历
: 对于先序
遍历
的第一个元素是整个二叉树的根节点,对应的,我们可以在中序
遍历
中找到该元素的位置,因为中序
遍历
的顺序是先左节点,再根节点,再是右节点,所以在中序
遍历
中,该元素位置左边的元素都是该根节点左子树中的元素,该元素位置右边的元素都是该根节点右子树中的元素,同样也可以根据左右元素的数量知道左子树和右子树元素的数量。因为对于先序
遍历
,是按照根左右的顺序,所以我们可以在
matlab零基础入门路径规划城市
遍历
机器人路径等
问题
matlab零基础入门路径规划城市
遍历
机器人路径等
问题
,通过编程实战掌握具体应用。包括matlab入门知识(包括变量类型、数据类型、单元数组、结构体、矩阵、高级编程技巧等)、路径规划方面的案例、城市
遍历
方面的案例...
[算法]图算法之骑士
遍历
问题
(象棋中马的
遍历
问题
)分析,C语言实现
今天再讲点跟N皇后有关的
问题
,骑士
遍历
问题
,或者象棋中马的
遍历
问题
,当然这里的马是国际象棋了,两者有着很多相似点,同时又有很多不同点,主要还是限制路径的区别,N皇后主要是自由放置只要满足条件就好,马的
遍历
则跟上下
遍历
的路径有关了,主要运用了图算法之深度广度
遍历
,以及图的建立等算法。要求:实现棋盘上任意位置的一个棋子马,使它不重复的走过棋盘上的每一个棋盘格分析:首先知道马在棋盘是怎么走的,根据国际象
回溯法之马的
遍历
问题
(递归)
马的
遍历
问题
:在n*m的棋盘上,马只能走日字。马从位置(x,y)处出发,把棋盘的每一点都走一次,且只走一次,找出所有路径。
问题
分析:行n,列m,马在不出边界的情况下有8个方向可以行走(走日字),如当前坐标为(x,y),则行走后的坐标可以为: (x+1,y+2) (x+1,y-2), (x+2,y+1) (x+2,y-1) (x-1,y-2) (x-1,y+2) (x-2,y-1) (x-2,y+1) 回溯法算法设计: 搜索空间是nM个点,约束条件是不出边界且每个点只经过一次,节点的扩展规则如上所述。 搜
数据结构与算法
33,008
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章