在数据结构的世界里,二叉树是一种非常重要的非线性结构。它由节点组成,每个节点最多有两个子节点:左子节点和右子节点。二叉树的遍历是指按照某种顺序访问所有节点的过程,常见的遍历方式有前序遍历(根-左-右)、中序遍历(左-根-右)和后序遍历(左-右-根)。
以下是C语言实现二叉树遍历的一个简单示例👇
```c
include
include
struct Node {
int data;
struct Node left, right;
};
struct Node newNode(int data) {
struct Node node = (struct Node)malloc(sizeof(struct Node));
node->data = data;
node->left = node->right = NULL;
return node;
}
void preorder(struct Node root) {
if (root == NULL) return;
printf("%d ", root->data);
preorder(root->left);
preorder(root->right);
}
void inorder(struct Node root) {
if (root == NULL) return;
inorder(root->left);
printf("%d ", root->data);
inorder(root->right);
}
void postorder(struct Node root) {
if (root == NULL) return;
postorder(root->left);
postorder(root->right);
printf("%d ", root->data);
}
// 示例用法
int main() {
struct Node root = newNode(1);
root->left = newNode(2);
root->right = newNode(3);
root->left->left = newNode(4);
root->left->right = newNode(5);
printf("Preorder traversal: ");
preorder(root);
printf("\n");
printf("Inorder traversal: ");
inorder(root);
printf("\n");
printf("Postorder traversal: ");
postorder(root);
printf("\n");
return 0;
}
```
通过这段代码,我们可以轻松实现二叉树的三种遍历方式。掌握这些基础操作,对于学习更复杂的算法和数据结构非常重要!💡