使用c++代码实现二叉树及应用 (1)二叉树的建立与遍历 [问题描述] 建立一棵二叉树,并对其进行遍历(先序、中序、后序),打印输出遍历结果。 [基本要求] 从键盘接受输入(先序),以二叉链表作为存储结构,建立二叉树(以先序来建立),并采用递归算法对其进行遍历(先序、中序、后序),将遍历结果打印输出。
时间: 2024-04-07 07:30:10 浏览: 87
C++ 实现二叉树的建立和遍历
4星 · 用户满意度95%
以下是使用C++实现二叉树的建立和遍的示例代码:
```cpp
#include <>
using namespace std;
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
// 先序遍历
void preorderTraversal(TreeNode* root) {
if (root == nullptr) return;
cout << root->val << " ";
preorderTraversal(root->left);
preorderTraversal(root->right);
}
// 中序遍历
void inorderTraversal(TreeNode* root) {
if (root == nullptr) return;
inorderTraversal(root->left);
cout << root->val << " ";
inorderTraversal(root->right);
}
// 后序遍历
void postorderTraversal(TreeNode* root) {
if (root == nullptr) return;
postorderTraversal(root->left);
postorderTraversal(root->right);
cout << root->val << " ";
}
// 通过先序遍历构建二叉树
TreeNode* buildTree() {
int val;
cin >> val;
if (val == -1) return nullptr; // -1表示空节点
TreeNode* root = new TreeNode(val);
cout << "Enter left child of " << val << ": ";
root->left = buildTree();
cout << "Enter right child of " << val << ": ";
root->right = buildTree();
return root;
}
int main() {
cout << "Enter the values of the tree in preorder (-1 for empty node): ";
TreeNode* root = buildTree();
cout << "Preorder traversal: ";
preorderTraversal(root);
cout << endl;
cout << "Inorder traversal: ";
inorderTraversal(root);
cout << endl;
cout << "Postorder traversal: ";
postorderTraversal(root);
cout << endl;
return 0;
}
```
在上述代码中,我们使用了二叉树的先序遍历来构建二叉树。输入时,以先序的方式逐个输入节点的值,-1表示空节点。然后使用递归算法实现了先序、中序和后序遍历,并打印输出遍历结果。
请注意,这只是一个示例代码,您可以根据自己的需求进行修改和扩展。
阅读全文