用C语言编写二叉树的递归遍历算法,实现:给定一颗二叉树的“扩展先序遍历”,创建这课二叉树
时间: 2023-12-01 07:55:41 浏览: 105
下面是用C语言编写二叉树的递归遍历算法的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 二叉树结构体
struct TreeNode {
char val;
struct TreeNode* left;
struct TreeNode* right;
};
// 递归创建二叉树
struct TreeNode* createTree(char* s, int* pos) {
if (s[*pos] == '\0' || s[*pos] == '#') {
(*pos)++;
return NULL;
}
struct TreeNode* node = (struct TreeNode*)malloc(sizeof(struct TreeNode));
node->val = s[*pos];
(*pos)++;
node->left = createTree(s, pos);
node->right = createTree(s, pos);
return node;
}
// 递归先序遍历二叉树
void preorderTraversal(struct TreeNode* root) {
if (root == NULL) {
return;
}
printf("%c ", root->val);
preorderTraversal(root->left);
preorderTraversal(root->right);
}
int main() {
char s[100];
scanf("%s", s);
int pos = 0;
struct TreeNode* root = createTree(s, &pos);
printf("先序遍历结果为:");
preorderTraversal(root);
return 0;
}
```
其中,`createTree()` 函数接收一个扩展先序遍历字符串和一个指针 `pos`,在递归过程中不断更新 `pos` 的值,用于在字符串中找到下一个节点的值。当遇到空节点时,返回 `NULL`。`preorderTraversal()` 函数用于递归先序遍历二叉树。在 `main()` 函数中,读入扩展先序遍历字符串,调用 `createTree()` 函数创建二叉树,然后调用 `preorderTraversal()` 函数进行先序遍历,并输出结果。
阅读全文