创建一棵二叉树,以二叉链表作存储结构,实现先根递归遍历算法
时间: 2023-06-05 16:47:50 浏览: 156
以二叉链表作存储结构,实现先根遍历算法
首先,我们需要定义二叉树的结构体:
```
typedef struct BiTNode {
char data; // 数据域
struct BiTNode *lchild, *rchild; // 左右孩子指针
} BiTNode, *BiTree;
```
接下来,我们可以按照先根递归遍历的顺序,实现递归函数:
```
void PreOrderTraverse(BiTree T) {
if (T == NULL) {
return;
}
printf("%c ", T->data); // 访问根节点
PreOrderTraverse(T->lchild); // 先序遍历左子树
PreOrderTraverse(T->rchild); // 先序遍历右子树
}
```
最后,我们可以创建一棵二叉树,并调用先根递归遍历函数:
```
int main() {
// 创建二叉树
BiTree T = (BiTree)malloc(sizeof(BiTNode));
T->data = 'A';
T->lchild = (BiTree)malloc(sizeof(BiTNode));
T->lchild->data = 'B';
T->lchild->lchild = NULL;
T->lchild->rchild = NULL;
T->rchild = (BiTree)malloc(sizeof(BiTNode));
T->rchild->data = 'C';
T->rchild->lchild = (BiTree)malloc(sizeof(BiTNode));
T->rchild->lchild->data = 'D';
T->rchild->lchild->lchild = NULL;
T->rchild->lchild->rchild = NULL;
T->rchild->rchild = (BiTree)malloc(sizeof(BiTNode));
T->rchild->rchild->data = 'E';
T->rchild->rchild->lchild = NULL;
T->rchild->rchild->rchild = NULL;
// 先根递归遍历
PreOrderTraverse(T);
return ;
}
```
输出结果为:A B C D E
阅读全文