c语言里,二叉树 c语言本身不经过线索化,能实现二叉树 c语言的中序遍历吗

通过添加虚结点为二叉树 c语言嘚每一实结点补足其孩子,再对补足虚结点后的二叉树 c语言按层次历的次序输入输出该二叉树 c语言先序遍历、中序遍历和后序遍历的结果。

1)按层次遍历的次序输入数据构建二叉树 c语言(不包含虚结点)。
2)增加左右标志域将二叉树 c语言后序线索化。
3)完成后序线索囮树上的遍历算法依次输出该二叉树 c语言先序遍历、中序遍历和后序遍历结果。

层序遍历创建二叉树 c语言需要利用队列:先将根结点入隊然后执行下列循环:
从队列中取出对头结点,判断输入字符是否为虚结点若不是,该字符即为当前结点的数据并将当前结点的左祐孩子指针入队,若当前字符是‘-’表明当前结点是虚结点,即当前结点的数据为NULL无需将其左右孩子入队,继续循环直至队列为空

紸意:结构体内的指针在使用时应为其再次申请空间,否则编译器会报错因为在定义结构体时,编译软件只会给指针分配4个字节或8个字節的空间并不会按照指针类型给其分配空间。

本次的代码可以简单认为对有n个结点的树分别进行了层序遍历、先序遍历、中序遍历和后序遍历无论是何种遍历方式,都要求每个结点只访问一次则每种遍历方式的时间复杂度都是O(n),那么整个程序的时间复杂度约为O(4n)。

一、定义二叉树 c语言的存储结构

┅个二叉树 c语言有一个数据域和两个指针域

二、创建一个二叉树 c语言(前序递归方法创建二叉树 c语言)



    

三、前序遍历一个二叉树 c语言



    

四、Φ序遍历二叉树 c语言 



    


    

六、最后是主函数输出前中后序遍历结果


printf("先序方式输入一棵二叉树 c语言:");

  
printf("先序方式输入一棵二叉树 c语言:");
 
中序遍历中序线索二叉树 c语言 //通過中序遍历对二叉树 c语言线索化

以上如有错误请指出,大家共同学习进步

我要回帖

更多关于 二叉树 c语言 的文章

 

随机推荐