用c++代码编写二叉树的创建与遍历
时间: 2023-12-18 11:03:34 浏览: 66
好的,下面是用 C++ 代码实现二叉树的创建与遍历的示例:
```c++
#include <iostream>
using namespace std;
// 二叉树结点定义
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
// 创建二叉树
TreeNode* createBinaryTree() {
int val;
cin >> val;
if (val == -1) { // 输入 -1 表示该结点为空
return NULL;
}
TreeNode* root = new TreeNode(val);
root->left = createBinaryTree();
root->right = createBinaryTree();
return root;
}
// 前序遍历二叉树
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* root = createBinaryTree();
cout << "前序遍历结果:";
preOrderTraversal(root);
cout << endl;
cout << "中序遍历结果:";
inOrderTraversal(root);
cout << endl;
cout << "后序遍历结果:";
postOrderTraversal(root);
cout << endl;
return 0;
}
```
在上述代码中,我们定义了一个二叉树结点 `TreeNode`,其中包括一个 `val` 值,以及左右子树指针 `left` 和 `right`。然后,我们用 `createBinaryTree()` 函数递归地创建二叉树,用 `preOrderTraversal()`、`inOrderTraversal()` 和 `postOrderTraversal()` 分别实现前序遍历、中序遍历和后序遍历。最后,在 `main()` 函数中,我们调用上述函数,输出遍历结果。
阅读全文