c++ 二叉树
时间: 2023-07-01 10:13:47 浏览: 48
C++中二叉树可以使用结构体和类来实现。以下是一个用结构体实现的简单二叉树:
```c++
#include<iostream>
using namespace std;
struct Node {
int data;
Node *left;
Node *right;
};
Node* createNode(int data) {
Node *newNode = new Node();
newNode->data = data;
newNode->left = nullptr;
newNode->right = nullptr;
return newNode;
}
int main() {
// 创建一个二叉树
Node *root = createNode(1);
root->left = createNode(2);
root->right = createNode(3);
root->left->left = createNode(4);
root->left->right = createNode(5);
// 遍历二叉树
cout << "Preorder traversal: ";
// 先序遍历
void preorderTraversal(Node *node) {
if (node == nullptr) return;
cout << node->data << " ";
preorderTraversal(node->left);
preorderTraversal(node->right);
}
preorderTraversal(root);
cout << endl << "Inorder traversal: ";
// 中序遍历
void inorderTraversal(Node *node) {
if (node == nullptr) return;
inorderTraversal(node->left);
cout << node->data << " ";
inorderTraversal(node->right);
}
inorderTraversal(root);
cout << endl << "Postorder traversal: ";
// 后序遍历
void postorderTraversal(Node *node) {
if (node == nullptr) return;
postorderTraversal(node->left);
postorderTraversal(node->right);
cout << node->data << " ";
}
postorderTraversal(root);
return 0;
}
```
可以看到,我们通过`createNode`函数创建了一个新的节点,然后用指针连接起来,最后通过三种不同的遍历方式来遍历这颗二叉树。