根据先序序列生成二叉树,c++代码实现
时间: 2024-01-23 19:43:25 浏览: 22
下面是实现根据先序序列生成二叉树的C代码:
```
#include <stdio.h>
#include <stdlib.h>
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
struct TreeNode* buildTree(int* preorder, int preorderSize){
if(preorderSize == 0) return NULL;
struct TreeNode *root = (struct TreeNode *)malloc(sizeof(struct TreeNode));
root->val = preorder[0];
root->left = NULL;
root->right = NULL;
int index = 1;
while(index < preorderSize && preorder[index] < preorder[0])
index++;
root->left = buildTree(preorder+1, index-1);
root->right = buildTree(preorder+index, preorderSize-index);
return root;
}
int main() {
int preorder[5] = {3, 1, 2, 5, 4};
struct TreeNode *root = buildTree(preorder, 5);
return 0;
}
```
其中,buildTree函数通过递归的方式构建二叉树,从先序序列中取出第一个元素作为当前节点的值,然后将序列分为左右两部分分别递归构建左子树和右子树。在这里,我们假设二叉树的节点值是整数类型。