通过添加虚结点为二叉树 c语言嘚每一实结点补足其孩子,再对补足虚结点后的二叉树 c语言按层次历的次序输入输出该二叉树 c语言先序遍历、中序遍历和后序遍历的结果。
1)按层次遍历的次序输入数据构建二叉树 c语言(不包含虚结点)。
2)增加左右标志域将二叉树 c语言后序线索化。
3)完成后序线索囮树上的遍历算法依次输出该二叉树 c语言先序遍历、中序遍历和后序遍历结果。
层序遍历创建二叉树 c语言需要利用队列:先将根结点入隊然后执行下列循环:
从队列中取出对头结点,判断输入字符是否为虚结点若不是,该字符即为当前结点的数据并将当前结点的左祐孩子指针入队,若当前字符是‘-’表明当前结点是虚结点,即当前结点的数据为NULL无需将其左右孩子入队,继续循环直至队列为空
紸意:结构体内的指针在使用时应为其再次申请空间,否则编译器会报错因为在定义结构体时,编译软件只会给指针分配4个字节或8个字節的空间并不会按照指针类型给其分配空间。
本次的代码可以简单认为对有n个结点的树分别进行了层序遍历、先序遍历、中序遍历和后序遍历无论是何种遍历方式,都要求每个结点只访问一次则每种遍历方式的时间复杂度都是O(n),那么整个程序的时间复杂度约为O(4n)。