构造一棵二叉树,先序遍历并输出二叉树的每个结点。 示例: 输入: 1 2 3 4 6 7 8 输出:1246378 用c语言写完整代码
时间: 2024-12-25 12:24:10 浏览: 3
要使用C++构建一个二叉树,可以按照以下步骤进行:
首先,我们需要定义一个简单的二叉树结构(这里假设节点包含整数值):
```cpp
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
```
接着,我们可以编写一个递归函数来根据先序遍历(根->左->右)和中序遍历(左->根->右)构建二叉树:
```cpp
TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {
if (preorder.empty()) return nullptr;
// 找到先序遍历中的根节点
int root_val = preorder[0];
auto it = find(inorder.begin(), inorder.end(), root_val);
// 构建左子树和右子树
TreeNode* root = new TreeNode(root_val);
root->left = buildTree(preorder.begin() + 1, inorder.begin() - it);
root->right = buildTree(preorder.begin() + it + 1, inorder.end());
return root;
}
```
最后,我们调用这个函数,给定先序遍历和中序遍历的数组作为输入,然后输出整个树:
```cpp
void printPostorder(TreeNode* root) {
if (!root) return;
printPostorder(root->left);
printPostorder(root->right);
cout << root->val << " ";
}
int main() {
vector<int> preorder = {1, 2, 4, 6, 3, 7, 8}; // 先序遍历
vector<int> inorder = {4, 2, 6, 1, 3, 7, 8, 5}; // 中序遍历
TreeNode* root = buildTree(preorder, inorder);
printPostorder(root); // 输出:1246378
return 0;
}
```
阅读全文