二叉树的建立
2018-01-29 本文已影响0人
我有一只碗
#include <stdio.h>
#include <stdlib.h>
// 二叉树的二叉链表存储结构
typedef struct BiNode
{
char data;
struct BiNode *left_child, *right_child;
} BiNode, *BiTree;
// 建立二叉树
BiTree create_bitree()
{
char c;
BiTree t;
scanf("%c", &c);
// #表示该节点为空
if (c == '#')
{
t = NULL;
}
else
{
t = (BiTree)malloc(sizeof(BiNode));
t->data = c;
// 分别建立左、右子树
t->left_child = create_bitree();
t->right_child = create_bitree();
}
// 返回根节点
return t;
}
// 二叉树的前序遍历
void pre_traversal(BiTree t)
{
if (t == NULL)
{
return;
}
printf("%c\n", t->data);
pre_traversal(t->left_child);
pre_traversal(t->right_child);
}
int main()
{
BiTree root = create_bitree();
pre_traversal(root);
return 0;
}
测试:
输入:ABC####
输出:ABC