数据结构C语言二叉树

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构C语言二叉树相关的知识,希望对你有一定的参考价值。

写了个代码总不能运行,但找不出错,求大佬给看看
#include<stdio.h>
#include<stdlib.h>
typedef struct BiTNode
char data;
struct BiTNode *lchild, *rchild;//左右孩子指针
BiTNode, *BiTree;
int CreateBiTree(BiTree T)

//按先序次序输入二叉树中的结点的值(一个字符),空格字符表示空数
//构造二叉链表表示的二叉树t
char ch;
scanf("%c",&ch);
if (ch == '#') T = NULL;
else
if (!(T = ((BiTNode *)malloc(sizeof(BiTNode)))));
T->data = ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);

return 0;

void PreOrderTraverse(T)

if (T)
printf("%c", T->data);
if (T.lchild)
PreOrderTraverse(T->lchild);
if (T->child)
PreOrderTraverse(T->rchild);

//前序遍历并输出节点值
void InOrderTraverse(T)

if (T)
if (T->lchild)
InOrderTraverse(T->child);
printf("%c", T->data);
if(T->rchild)
InOrderTraverse(T->rchild)


//中序遍历并输出节点数据
void PostOrderTraverse(T)



if (T)

if (T->lchild)

PostOrderTraverse(T->lchild);

if(T->rchild)

PostOrderTraverse(T->rchild);

printf("%d",T->data)





int main

BiTree T;
CreateBiTree(&T);
PreOrderTraverse(&T);
InOrderTraverse(T);
PostOrderTraverse(T);
return 0;

参考技术A 层次遍历应该没有递归算法
递归实际就是一种深度优先的算法
而层次遍历实际是广度优先的遍历算法,所以递归不适用
比如假设有递归算法,现遍历i层的开始,对i层第一个元素遍历后需调用递归函数遍历其孩子,递归调用完成后才继续遍历i层第二个元素,这样就不是层次遍历了
参考技术B 先序序列不能确定一颗树,题意不清。程序里面,需要将生成的新节点挂到父节点。大致是,建立树后返回节点,挂到根部。

以上是关于数据结构C语言二叉树的主要内容,如果未能解决你的问题,请参考以下文章

请问C语言如何创建二叉树????

数据结构C语言描述中关于二叉树

二叉树的基本操作 C语言版的

用c语言写二叉树,源代码。

数据结构与算法分析 —— C 语言描述:二叉树

C语言数据结构“遍历二叉树”