中序遍历创建二叉树 用c语言实现完整程序
时间: 2024-02-18 12:01:39 浏览: 91
好的,以下是用 C 语言实现中序遍历创建二叉树的完整程序:
```c
#include <stdio.h>
#include <stdlib.h>
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
struct TreeNode* buildTree(int* inorder, int inorderSize) {
return build(inorder, 0, inorderSize - 1);
}
struct TreeNode* build(int* inorder, int inStart, int inEnd) {
if (inStart > inEnd) {
return NULL;
}
// 找到根节点
int mid = (inStart + inEnd) / 2;
struct TreeNode* root = (struct TreeNode*) malloc(sizeof(struct TreeNode));
root->val = inorder[mid];
// 分割左子树和右子树
root->left = build(inorder, inStart, mid - 1);
root->right = build(inorder, mid + 1, inEnd);
return root;
}
void inorderTraversal(struct TreeNode* root) {
if (root == NULL) {
return;
}
inorderTraversal(root->left);
printf("%d ", root->val);
inorderTraversal(root->right);
}
int main() {
int inorder[] = {1, 2, 3, 4, 5};
int inorderSize = sizeof(inorder) / sizeof(inorder[0]);
struct TreeNode* root = buildTree(inorder, inorderSize);
inorderTraversal(root);
return 0;
}
```
程序中,我们定义了一个 `TreeNode` 结构体,包含节点值 `val`,左子树指针 `left` 和右子树指针 `right`。`buildTree` 函数是对外暴露的接口,它调用 `build` 函数构建二叉树。`inorderTraversal` 函数用于中序遍历二叉树并输出节点值。
程序输出结果为:`1 2 3 4 5`。
阅读全文