#include<stdio.h>
#include<stdlib.h>
typedef struct NodeTree Tree;
struct NodeTree {
char val;//数据域
Tree* left;//左孩子
Tree* right;//右孩子
};
Tree* Create(Tree* T)//创建二叉树
{
char ch;
scanf("%c", &ch);
if (ch == '#') {//利用#作为结束符构建拓展二叉树
T = NULL;
}
else {
T = (Tree*)malloc(sizeof(Tree));
T->val = ch;
if (!T) {
exit(0);
}
T->left = Create(T->left);
T->right = Create(T->right);
}
return T;
}
void PreOrderTraverse(Tree* T)//前序遍历
{
if (!T)
return;
printf("%c ", T->val);
PreOrderTraverse(T->left);
PreOrderTraverse(T->right);
}
void InOrderTraverse(Tree* T)//中序遍历
{
if (!T)
return;
InOrderTraverse(T->left);
printf("%c ", T->val);
InOrderTraverse(T->right);
}
void PostOrderTraverse(Tree* T)//后序遍历
{
if (!T)
return;
PreOrderTraverse(T->left);
PreOrderTraverse(T->right);
printf("%c ", T->val);
}
int main()
{
Tree* T;
T = Create(NULL);
printf("\n前序遍历:\n");
PreOrderTraverse(T);
printf("\n中序遍历:\n");
InOrderTraverse(T);
printf("\n后序遍历:\n");
PostOrderTraverse(T);
printf("\n");
return 0;
}
效果图:

本文介绍了一种使用C语言实现二叉树的方法,包括二叉树的创建过程及前序、中序和后序遍历算法。通过具体的代码示例展示了如何构建二叉树并进行不同类型的遍历。
&spm=1001.2101.3001.5002&articleId=114899069&d=1&t=3&u=bc4b87b5de314069abc10dfb8fee0acb)
36万+

被折叠的 条评论
为什么被折叠?



