如果只利用先序序列创建二叉树c++
时间: 2024-10-18 13:17:40 浏览: 21
C++求先序序列(二叉树中,给出中序和后序,求先序,代码经过编译后,绝对可运行).rar
如果你想要使用先序遍历序列来构建二叉树(Binary Tree),在C++中可以采用递归的方式来实现。这里有一个简单的步骤:
1. 定义一个节点结构体(Node)包含值(value)、左子节点(left)和右子节点(right)。
```cpp
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
```
2. 创建一个函数,该函数接受当前的遍历序列、起始索引(start)和结束索引(end)。如果开始索引大于结束索引,则说明遍历结束,返回NULL表示空节点。
```cpp
TreeNode* buildTree(vector<int>& preorder, int start, int end) {
if (start > end) return nullptr;
// 先序遍历的第一个元素作为根节点
int rootVal = preorder[start];
TreeNode* root = new TreeNode(rootVal);
// 找到根节点的位置,在中序遍历中
int inOrderStart = 0, inOrderEnd = end;
for (int i = 0; i < inOrderEnd; ++i) {
if (preorder[i] == rootVal) {
inOrderStart = i + 1;
break;
}
}
// 分别处理左右子树
root->left = buildTree(preorder, start + 1, inOrderStart - 1);
root->right = buildTree(preorder, inOrderStart, end);
return root;
}
```
3. 最后,你可以通过调用这个 `buildTree` 函数,传入你的先序遍历数组和起始、结束索引来构造整个二叉树。
```cpp
vector<int> preorder = {1, 2, 4, 5, 3, 6}; // 示例先序遍历
auto root = buildTree(preorder, 0, preorder.size() - 1);
```
阅读全文