二叉树的遍历算法c语言,二叉树的遍历算法c语言代码

dfnjsfkhak 10 0

大家好,今天小编关注到一个比较意思的话题,就是关于二叉树的遍历算法c语言问题,于是小编就整理了2个相关介绍二叉树的遍历算法c语言的解答,让我们一起看看吧。

  1. 怎么用一个栈来实现二叉树的层次遍历,也就是广度优?
  2. 一棵二叉树的中序遍历序列为:DGBAECHF,后序遍历序列为:GDBEHFCA,则前序列遍历序列是?

用一个栈来实现二叉树的层次遍历,也就是广度优?

二叉树的层次遍历应该用的是队列吧。队列有一个头指针、一个尾指针。头指针指向当前读取节点然后查找当前节点的所有子节点push到队列的尾部,然后头指针加一,循环下去知道头指针和尾指针重合。核心思想还是BFS广度优先搜索。

一棵二叉树的中序遍历序列为:DGBAECHF,后序遍历序列为:GDBEHFCA,则前序列遍历序列是?

不知道你理解前,中,后序遍历的概念没?

二叉树的遍历算法c语言,二叉树的遍历算法c语言代码-第1张图片-芜湖力博教育咨询公司
图片来源网络,侵删)

前序遍历又叫先根遍历,就是先访问根再访问左子树再访问右子树。

中序就是先访问左子树再访问根再是右子树。

后根就是先访问左子树然后是右子树最后是根。

二叉树的遍历算法c语言,二叉树的遍历算法c语言代码-第2张图片-芜湖力博教育咨询公司
(图片来源网络,侵删)

简单的讲就是,你看后序遍历序列为:GDBEHFCA,最后一个是A,说明A是根。然后再去看中序遍历序列为:DGBAECHF,看到A在中间,把DGBAECHF分成DGB和ECHF两部分,好,现在单独看这两个子树,左子树DGB和右子树ECHF。

同样后序遍历序列GDBEHFCA中,找到DGB这三个字母,发现它是这样排列的,GDB,因为它是后跟遍历,所以子树DGB的根是B,这时候,你通过观察中序的DGB和后序的GDB,发现中序的右边没有东西,所以得出:子树GDB没有右支。同样的道理,发现子树ECHF的根是C,左子树只有E,右子树是HF。

像这样一步步分析

二叉树的遍历算法c语言,二叉树的遍历算法c语言代码-第3张图片-芜湖力博教育咨询公司
(图片来源网络,侵删)

那么结论就是前序遍历是ABDGCEFH。

你最好能画个图就好理解多了。

到此,以上就是小编对于二叉树的遍历算法c语言的问题就介绍到这了,希望介绍关于二叉树的遍历算法c语言的2点解答对大家有用

标签: 子树 遍历 指针