前序遍历创建二叉树c++
时间: 2023-11-21 20:05:53 浏览: 104
可以通过递归方式实现前序遍历创建二叉树的算法,具体步骤如下(假设二叉树的节点类型为Node):
```
// 定义一个全局变量,用于记录前序遍历序列中的当前节点下标
int index = 0;
// 递归函数,用于创建二叉树
Node* createTree(vector<int>& preorder, int left, int right) {
// 如果左下标大于右下标,说明已经遍历完该子树,返回空节点
if (left > right) {
return nullptr;
}
// 创建当前节点
Node* root = new Node(preorder[index]);
// 前序遍历序列中的下一个节点
index++;
// 递归创建左子树
root->left = createTree(preorder, left, index - 1);
// 递归创建右子树
root->right = createTree(preorder, index, right);
return root;
}
// 主函数,用于调用递归函数创建二叉树
Node* buildTree(vector<int>& preorder) {
return createTree(preorder, 0, preorder.size() - 1);
}
```
其中,preorder为前序遍历序列,left和right分别为当前子树在前序遍历序列中的左右下标。在递归函数中,首先判断左下标是否大于右下标,如果是则返回空节点;否则,创建当前节点,并将前序遍历序列中的下一个节点作为左子树的根节点,递归创建左子树和右子树。最后,返回根节点即可。
阅读全文