高分求解 关于数据结构中的树的问题?

spirix 2002-09-26 03:18:20
有类题目,给你两个遍历的序列,然后让你给出对应的树!
比如:
画出和下列一致的序列对应的树T
树的先根次序访问序列 GFKDAIEBCHJ
树的后根次序访问序列 DIAEKFCJHBG
请问这类题目如何分析?
是不是有什么解题的方法,还是自己不断的画图去试?
...全文
82 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
szhf1980 2002-09-27
  • 打赏
  • 举报
回复
先找出根节点,然后再逐步试着找出其孩子节点
spirix 2002-09-27
  • 打赏
  • 举报
回复
这个是严蔚敏的c语言版数据结构习题集上的题目(6.23),我也觉得好像是错了,
原体是
GFKDAIEBCHJ
DIAEKFCJHBG

是不是应该是
GFKDEAIBCHJ
DIAEKFCJHBG

请高人指点!
sandrowjw 2002-09-26
  • 打赏
  • 举报
回复
spirix 2002-09-26
  • 打赏
  • 举报
回复
先根遍历和后根遍历应该就对应是先序遍历和后序遍历吧?
sandrowjw 2002-09-26
  • 打赏
  • 举报
回复
也可以从后根序列里反向找根,然后去切先根序列。
自己研究研究,获得两个序列以后生成树的方法很多的。
sandrowjw 2002-09-26
  • 打赏
  • 举报
回复
先根序序列里依次找根,然后用根去切后根序的序列,以及切下来的子序列,如果切下来切点正好是在某子序列的左端,则该根实际上为叶子。如果叶子右边就是根,则回溯一层,左右叶子都找到后也回溯一层。
例:GFKDAIEBCHJ
G切 DIAEKFCJHB G G总根
F切 DIAEK F CJHB G F为G左子树根
K切 DIAE K F CJHB G K为F左子树根
D切 D IAE K F CJHB G D为K左叶子
A切 D I A E K F CJHB G A为K右子树根
I切 D I A E K F CJHB G I为A(左/右)叶子
I右边就是A,所以A没有两片叶子,回溯到K
E切 D I A E K F CJHB G E为K(左/右)叶子,同上回溯到F、再回溯到G
……
shdiao 2002-09-26
  • 打赏
  • 举报
回复
先序,中序,后序,
给出两个顺序才能画出树来,
你就给了一个,又不是什么完全二叉树
怎么画
jfguo 2002-09-26
  • 打赏
  • 举报
回复
是二叉树,对吧
结合第二个序列看第一个序列,一步一步分析下去就可以了

容易看出G是树根,结合第二个序列知FKDAIE (先根)和 DIAEKF(后根)构成左子树, BCHJ(先根)和CJHB(后根)构成右子树
这样一步步下去就可以画出整棵树了

//btw,你的序列是不是有错, AIE 和 IAE 处





blh 2002-09-26
  • 打赏
  • 举报
回复
你先搞清楚什么是先根次序访问和后根次序访问,呵呵,我也忘了

69,370

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧