按照先序遍历创建一棵二叉树。空树以‘#’表示。 并分别按先序遍历、中序遍历和后序遍历分别输出二叉树的结果 用c++编写程序要完整的
时间: 2024-11-25 12:18:53 浏览: 23
在C++中,我们可以使用递归的方式按照先序遍历(根节点 -> 左子树 -> 右子树)来创建并打印二叉树。这里是一个简单的例子:
```cpp
#include <iostream>
using namespace std;
// 定义二叉树节点结构体
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
// 先序遍历函数
void preorderTraversal(TreeNode* root) {
if (root == NULL)
return;
cout << root->val << " ";
preorderTraversal(root->left);
preorderTraversal(root->right);
}
// 中序遍历函数
void inorderTraversal(TreeNode* root) {
if (root == NULL)
return;
inorderTraversal(root->left);
cout << root->val << " ";
inorderTraversal(root->right);
}
// 后序遍历函数
void postorderTraversal(TreeNode* root) {
if (root == NULL)
return;
postorderTraversal(root->left);
postorderTraversal(root->right);
cout << root->val << " ";
}
int main() {
// 示例:创建一个二叉树
TreeNode* tree = new TreeNode(1);
tree->left = new TreeNode(2);
tree->right = new TreeNode(3);
tree->left->left = new TreeNode(4);
tree->left->right = new TreeNode(5);
// 打印先序遍历结果
cout << "Preorder traversal: ";
preorderTraversal(tree);
cout << endl;
// 打印中序遍历结果
cout << "Inorder traversal: ";
inorderTraversal(tree);
cout << endl;
// 打印后序遍历结果
cout << "Postorder traversal: ";
postorderTraversal(tree);
cout << endl;
return 0;
}
```
这个程序首先定义了一个二叉树节点结构,然后提供了三个遍历函数,每个函数都接受一个二叉树的根节点作为输入,并按相应的顺序访问节点。在`main`函数中,我们创建了一个示例二叉树,并分别调用了这三个遍历函数来打印结果。
阅读全文