c++根据二叉树的先序遍历建立二叉树
时间: 2024-12-18 21:38:07 浏览: 10
在C++中,根据二叉树的先序遍历(根节点 -> 左子树 -> 右子树)重建一棵二叉树,你可以按照递归的方式实现。下面是一个简单的步骤:
1. 定义一个二叉树节点类(TreeNode),包含值、左子节点和右子节点。
```cpp
class TreeNode {
public:
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
```
2. 创建一个函数来根据先序遍历序列构建二叉树。这个函数需要两个参数:当前遍历到的节点值和剩余的遍历序列。
```cpp
TreeNode* buildTree(vector<int>& preorder, int start = 0) {
if (start >= preorder.size()) return nullptr; // 遍历结束
// 找到根节点
TreeNode* root = new TreeNode(preorder[start]);
// 继续在剩余序列中找到左右子树的位置
int index = start + 1;
for (int i = 1; i < preorder.size(); ++i) {
if (preorder[i] < preorder[start]) { // 当前元素小于根节点,继续在左侧寻找
root->left = buildTree(preorder, index);
index++;
} else { // 其他元素大于等于根节点,说明在右侧
root->right = buildTree(preorder, index);
break; // 结束当前循环
}
}
return root;
}
```
3. 调用这个`buildTree`函数,传入先序遍历的数组即可。
```cpp
vector<int> preorder = {1, 2, 3, 4, 5, 6, 7}; // 示例先序遍历
auto root = buildTree(preorder);
```
阅读全文