c语言先序遍历创建二叉树怎么写
时间: 2024-10-19 19:17:09 浏览: 41
C语言,二叉树中的非递归的先序遍历
5星 · 资源好评率100%
在C语言中,使用先序遍历创建二叉树通常需要三个步骤:创建一个节点、读入数据并将其插入到正确的子树以及处理整个过程。这里是一个简单的示例,假设我们有结构体`Node`表示二叉树的节点,并有一个函数`createTree()`来进行遍历:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点
typedef struct Node {
int data;
struct Node* left;
struct Node* right;
} Node;
// 创建新节点
Node* newNode(int data) {
Node* node = (Node*)malloc(sizeof(Node));
node->data = data;
node->left = node->right = NULL;
return node;
}
// 先序遍历创建二叉树
Node* createTree(char* input, int* index) {
if (*input == '\0') return NULL; // 结束标志
// 创建新节点
Node* root = newNode(atoi(input++));
// 分别处理左右子树
if (*input != ',') {
root->left = createTree(input, index);
}
if (*input != ')') {
*index += 1; // 跳过逗号
root->right = createTree(input, index);
}
return root;
}
// 示例遍历字符串创建二叉树
int main() {
char str[] = "4,2,6,1,3,5,7";
int index = 0;
Node* root = createTree(str, &index);
// 现在root就是按照先序遍历顺序构建的二叉树
// 可以进一步添加打印、遍历或操作树的代码
return 0;
}
```
这个例子中,`createTree()`函数接收一个以逗号分隔的字符数组作为输入,例如"4,2,6,1,3,5,7",然后按照"根-左-右"的顺序创建二叉树。
阅读全文