本题目要求补充完整二叉树的创建和前序遍历算法。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 100
typedef char DATATYPE;
/****** 二叉树的二叉链表存储结构 ******/
typedef struct Node
{
DATATYPE data; // 数据域
struct Node* lchild; // 左孩子指针域
struct Node* rchild; // 右孩子指针域
}BTNode, * PBTNode, * BiTreeLink;
/****** 创建二叉树 ******/
BiTreeLink CreateBinTree(char* nodes, int pos, int num)
{
PBTNode p;
if (nodes[pos] == ' ' || pos > num) // 递归结束条件
return NULL;
p = (_________)malloc(__________); // 建立根结点
if (!p)
{
printf("创建根结点失败!\n");
return 0;
}
p->data =________; // 将数据存入数据域
p->lchild = CreateBinTree(nodes, 2 * pos, num); // 建立左子树
p->rchild = CreateBinTree(nodes, 2 * pos + 1, num); // 建立右子树
return p;
}
/****** 二叉树前序遍历 ******/
void preorder(BTNode* t)
{
if (t != NULL)
{
printf("%c ",__________);
preorder(___________);
preorder(t->rchild);
}
}
void main()
{
int i;
BiTreeLink tree;
int length;
char nodes[N], str[N];
gets(str); // 获取用户输入序列
length = strlen(str);
for (i = 0; i < length; i++)
{
if (str[i] == ' ') // 检查用户输入是否有空格
{
nodes[i + 1] = '*'; // 如有空格则用*代替
}
else // 否则按照实际输入存储
{
nodes[i + 1] = str[i];
}
}
tree = CreateBinTree(________, 1, length); // 创建二叉树
preorder(tree); // 前序遍历
}
测试代码:
RAB DEF KL
输出结果:
R A * * * D * * B E K L F
——————————————————————————————————————————
解题:
1:PBTNode
2:sizeof(BTNode)
3:nodes[pos]
4:t->data
5:t->lchild
6:nodes
¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
1%本题目要求补充完整二叉树的创建和中序遍历算法。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 100
typedef char DATATYPE;
/****** 二叉树的二叉链表存储结构 ******/
typedef struct Node
{
DATATYPE data; // 数据域
struct Node* lchild; // 左孩子指针域
struct Node* rchild; // 右孩子指针域
}BTNode, * PBTNode, * BiTreeLink;
/****** 创建二叉树 ******/
BiTreeLink CreateBinTree(char* nodes, int pos, int num)
{
PBTNode p;
if (nodes[pos] == ' ' || pos > num) // 递归结束条件
return NULL;
p = (_________)malloc(__________); // 建立根结点
if (!p)
{
printf("创建根结点失败!\n");
return 0;
}
p->data =___________; // 将数据存入数据域
p->lchild = CreateBinTree(nodes, 2 * pos, num); // 建立左子树
p->rchild = CreateBinTree(nodes, 2 * pos + 1, num); // 建立右子树
return p;
}
/****** 二叉树中序遍历 ******/
void inorder(BTNode* t)
{
if (t != NULL)
{
inorder(____________);
printf("%c ",________);
inorder(t->rchild);
}
}
void main()
{
int i;
BiTreeLink tree;
int length;
char nodes[N], str[N];
gets(str); // 获取用户输入序列
length = strlen(str);
for (i = 0; i < length; i++)
{
if (str[i] == ' ') // 检查用户输入是否有空格
{
nodes[i + 1] = '*'; // 如有空格则用*代替
}
else // 否则按照实际输入存储
{
nodes[i + 1] = str[i];
}
}
tree = CreateBinTree(________, 1, length); // 创建二叉树
inorder(tree); // 中序遍历
}
测试代码:
RAB DEF KL
输出结果:
* * * A * D * R K E L B F
——————————————————————————————————————————
解题:
1:PBTNode
2: sizeof(BTNode)
3: nodes[pos]
4: t->lchild
5: t->data
6:nodes
¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
本题目要求补充完整二叉树的创建和后序遍历算法。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 100
typedef char DATATYPE;
/****** 二叉树的二叉链表存储结构 ******/
typedef struct Node
{
DATATYPE data; // 数据域
struct Node* lchild; // 左孩子指针域
struct Node* rchild; // 右孩子指针域
}BTNode, * PBTNode, * BiTreeLink;
/****** 创建二叉树 ******/
BiTreeLink CreateBinTree(char* nodes, int pos, int num)
{
PBTNode p;
if (nodes[pos] == ' ' || pos > num) // 递归结束条件
return NULL;
p = (____________)malloc(__________); // 建立根结点
if (!p)
{
printf("创建根结点失败!\n");
return 0;
}
p->data =_____________; // 将数据存入数据域
p->lchild = CreateBinTree(nodes, 2 * pos, num); // 建立左子树
p->rchild = CreateBinTree(nodes, 2 * pos + 1, num); // 建立右子树
return p;
}
/****** 二叉树后序遍历 ******/
void postorder(BTNode* t)
{
if (t != NULL)
{
postorder(__________);
postorder(t->rchild);
printf("%c ",__________);
}
}
void main()
{
int i;
BiTreeLink tree;
int length;
char nodes[N], str[N];
gets(str); // 获取用户输入序列
length = strlen(str);
for (i = 0; i < length; i++)
{
if (str[i] == ' ') // 检查用户输入是否有空格
{
nodes[i + 1] = '*'; // 如有空格则用*代替
}
else // 否则按照实际输入存储
{
nodes[i + 1] = str[i];
}
}
tree = CreateBinTree(___________, 1, length); // 创建二叉树
postorder(tree); // 后序遍历
}
测试代码:
RAB DEF KL
输出结果:
* * * * * D A K L E F B R
———————————————————————————————————————————
解题:
1:PBTNode
2:sizeof(BTNode)
3:nodes[pos]
4:t->lchild
5:t->data
6:nodes