什么是前序遍历、中序遍历和后序遍历?C语言实现
时间: 2024-03-20 07:37:12 浏览: 125
前序遍历、中序遍历和后序遍历是二叉树遍的三种方式。它们是指在遍历二叉树时,节点的访问顺序。
1. 前序遍历(Preorder Traversal):先访问根节点,然后按照先左后右的顺序递归地访问左子树和右子树。在C语言中,可以使用递归或者栈来实现前序遍历。
```c
// 递归实现前序遍历
void preorderTraversal(TreeNode* root) {
if (root == NULL) {
return;
}
printf("%d ", root->val); // 访问根节点
preorderTraversal(root->left); // 递归访问左子树
preorderTraversal(root->right); // 递归访问右子树
}
```
2. 中序遍历(Inorder Traversal):先按照先左后右的顺序递归地访问左子树,然后访问根节点,最后再递归地访问右子树。在C语言中,同样可以使用递归或者栈来实现中序遍历。
```c
// 递归实现中序遍历
void inorderTraversal(TreeNode* root) {
if (root == NULL) {
return;
}
inorderTraversal(root->left); // 递归访问左子树
printf("%d ", root->val); // 访问根节点
inorderTraversal(root->right); // 递归访问右子树
}
```
3. 后序遍历(Postorder Traversal):先按照先左后右的顺序递归地访问左子树和右子树,最后访问根节点。同样地,在C语言中,可以使用递归或者栈来实现后序遍历。
```c
// 递归实现后序遍历
void postorderTraversal(TreeNode* root) {
if (root == NULL) {
return;
}
postorderTraversal(root->left); // 递归访问左子树
postorderTraversal(root->right); // 递归访问右子树
printf("%d ", root->val); // 访问根节点
}
```
阅读全文