根据二叉数的抽象数据类型的定义,使用二叉链表实现一个二叉树,程序实现以下基本功能:1 二叉树的建立 2 前序遍历二叉树 3 中序遍历二叉树 4后序遍历二叉树
时间: 2024-08-12 18:10:45 浏览: 52
二叉树是一种常见的数据结构,它每个节点最多有两个子节点,通常被用来表示具有层次关系的数据。要使用二叉链表实现这个二叉树,我们需要定义一个二叉树节点的结构,包含数据域、左指针和右指针。以下是一个简单的 C++ 类来实现这个抽象数据类型:
```cpp
template <typename T>
struct TreeNode {
T data;
TreeNode<T>* left;
TreeNode<T>* right;
TreeNode(T value) : data(value), left(nullptr), right(nullptr) {}
};
```
现在我们来实现基本功能:
1. **二叉树建立**(插入节点):
```cpp
void insert(TreeNode<T>& root, T value) {
if (!root) {
root = new TreeNode<T>(value);
return;
}
if (value < root->data) {
insert(root->left, value);
} else {
insert(root->right, value);
}
}
```
2. **前序遍历**(根-左-右):
```cpp
void preOrderTraversal(TreeNode<T>* node) {
if (node) {
std::cout << node->data << " ";
preOrderTraversal(node->left);
preOrderTraversal(node->right);
}
}
```
3. **中序遍历**(左-根-右):
```cpp
void inOrderTraversal(TreeNode<T>* node) {
if (node) {
inOrderTraversal(node->left);
std::cout << node->data << " ";
inOrderTraversal(node->right);
}
}
```
4. **后序遍历**(左-右-根):
```cpp
void postOrderTraversal(TreeNode<T>* node) {
if (node) {
postOrderTraversal(node->left);
postOrderTraversal(node->right);
std::cout << node->data << " ";
}
}
```
阅读全文