先序和中序确定二叉树c语言
时间: 2023-11-20 08:54:37 浏览: 82
使用C语言来实现先序和中序遍历确定二叉树的过程。具体实现步骤如下:
1. 定义二叉树结构体,包括节点值、左右子树指针。
```c
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
```
2. 实现递归函数,根据先序和中序遍历结果构造二叉树。
```c
TreeNode* buildTree(int* preorder, int preorderSize, int* inorder, int inorderSize) {
if (preorderSize == 0) {
return NULL;
}
// 创建根节点
TreeNode* root = (TreeNode*)malloc(sizeof(TreeNode));
root->val = preorder[0];
// 在中序遍历中找到根节点的位置
int rootIndex = 0;
while (inorder[rootIndex] != root->val) {
rootIndex++;
}
// 递归构造左右子树
root->left = buildTree(preorder + 1, rootIndex, inorder, rootIndex);
root->right = buildTree(preorder + rootIndex + 1, preorderSize - rootIndex - 1, inorder + rootIndex + 1, inorderSize - rootIndex - 1);
return root;
}
```
3. 在主函数中调用递归函数,传入先序和中序遍历结果,得到构造好的二叉树。
```c
int main() {
int preorder[] = {3, 9, 20, 15, 7};
int inorder[] = {9, 3, 15, 20, 7};
TreeNode* root = buildTree(preorder, 5, inorder, 5);
return 0;
}
```
阅读全文