用二叉链表存放二叉树; 2、对建立的二叉链表进行遍历并输出三种遍历结果。 c语言
时间: 2024-11-16 15:19:24 浏览: 46
使用二叉链表来存储二叉树的过程可以分为以下几个步骤:
1. **节点定义**:首先,你需要定义一个包含节点数据、左指针和右指针的结构体。例如,在C语言中:
```c
typedef struct TreeNode {
int data; // 节点值
struct TreeNode* left; // 左孩子指针
struct TreeNode* right; // 右孩子指针
} TreeNode;
```
2. **构建二叉链表**:对于每个二叉树节点,将其左子节点设置为`left`指针,右子节点设置为`right`指针。根节点没有前驱节点,其余节点的前驱则是其父节点。
3. **遍历二叉链表**:
- **前序遍历(Root-Left-Right)**: 先访问根节点,然后递归地访问左子树和右子树。示例代码:
```c
void preorderTraversal(TreeNode* node) {
if (node != NULL) {
printf("%d ", node->data);
preorderTraversal(node->left);
preorderTraversal(node->right);
}
}
```
- **中序遍历(Left-Root-Right)**: 先访问左子树,然后根节点,最后右子树。示例代码:
```c
void inorderTraversal(TreeNode* node) {
if (node != NULL) {
inorderTraversal(node->left);
printf("%d ", node->data);
inorderTraversal(node->right);
}
}
```
- **后序遍历(Left-Right-Root)**: 先访问左子树和右子树,最后访问根节点。示例代码:
```c
void postorderTraversal(TreeNode* node) {
if (node != NULL) {
postorderTraversal(node->left);
postorderTraversal(node->right);
printf("%d ", node->data);
}
}
```
阅读全文