c语言二叉树遍历算法,c语言 二叉树遍历

dfnjsfkhak 15 0

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

  1. c语言遍历二叉树的代码?
  2. 二叉树的层次遍历?
  3. 已知二叉树的中序遍历结果为DBHEAFICG,后序遍历结果为DHEBIFGCA,试画出该二叉树,并求其前序遍列序列?

c语言遍历二叉树的代码

1.t = malloc(sizeof(tree));

2.t->rchild =createTree();

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

3.void qianxu(tree *t)

4.zhongxu(t->lchild );//再读左子树

printf("%c",t->data);//先读根结点

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

zhongxu(t->rchild );//再读右子树

5.houxu(t->lchild );//再读左子树

houxu(t->rchild );//再读右子树

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

printf("%c",t->data);//先读根结点

6.return 0;

二叉树的层次遍历?

设计一个算法层序遍历二叉树(同一层从左到右访问)。思想:用一个队列保存被访问的当前节点的左右孩子实现层序遍历。

void HierarchyBiTree(BiTree Root){

LinkQueue *Q; // 保存当前节点的左右孩子的队列

InitQueue(Q); // 初始化队列

if (Root == NULL) return ; //树为空则返回

BiNode *p = Root; // 临时保存树根Root到指针p中

Visit(p->data); // 访问根节点

if (p->lchild) EnQueue(Q, p->lchild); // 若存在左孩子,左孩子进队列

if (p->rchild) EnQueue(Q, p->rchild); // 若存在右孩子,右孩子进队列

while (!QueueEmpty(Q)) // 若队列不空,则层序遍历 { DeQueue(Q, p); // 出队列

已知二叉树的中序遍历结果为DBHEAFICG,后序遍历结果为DHEBIFGCA,试画出该二叉树,并求其前序遍列序列

--------------------A

---------------B----------C

----------D---------E--F--------G

------------------H-------I

前序为ABDEHCFIG

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

标签: 遍历 子树 队列