c语言递归函数二叉树的遍历
时间: 2023-12-05 10:39:42 浏览: 60
以下是C语言递归函数实现二叉树的遍历的代码示例:
1.先序遍历
```c
void PreOrder(BiTree T) {
if (T ! NULL) {
printf("%d ", T->key); // 先访问根节点
PreOrder(T->left); // 再遍历左子树
PreOrder(T->right); // 最后遍历右子树
}
}
```
2.中序遍历
```c
void InOrder(BiTree T) {
if (T != NULL) {
InOrder(T->left); // 先遍历左子树
printf("%d ", T->key); // 再访问根节点
InOrder(T->right); // 最后遍历右子树
}
}
```
3.后序遍历
```c
void PostOrder(BiTree T) {
if (T != NULL) {
PostOrder(T->left); // 先遍历左子树
PostOrder(T->right); // 再遍历右子树
printf("%d ", T->key); // 最后访问根节点
}
}
```
相关问题
c语言递归函数二叉树的遍历前序
以下是C语言递归函数实现二叉树前序遍历的代码:
```c
void PreOrderTraverse(BiTree T) {
if (T != NULL) {
printf("%d ", T->data); // 先访问根节点
PreOrderTraverse(T->left); // 再递归遍历左子树
PreOrderTraverse(T->right); // 最后递归遍历右子树
}
}
```
其中,`BiTree`是二叉树的结构体类型,包含了左右子树指针和节点数据等信息。在遍历过程中,先访问根节点,然后递归遍历左子树,最后递归遍历右子树。
C语言递归实现二叉树的遍历
二叉树的遍历分为三种:前序遍历、中序遍历和后序遍历。递归实现二叉树的遍历是比较简单的方法之一,下面以前序遍历为例,给出C语言递归实现二叉树的遍历的代码:
```c
// 定义二叉树结点
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
// 前序遍历
void preorderTraversal(struct TreeNode* root){
if(root == NULL) return;
printf("%d ",root->val); // 先访问根结点
preorderTraversal(root->left); // 再访问左子树
preorderTraversal(root->right); // 最后访问右子树
}
```
在上面的代码中,我们定义了二叉树结点的结构体,包括结点值和左右子树指针。然后,我们定义了一个前序遍历函数`preorderTraversal`,它接受一个指向二叉树根结点的指针作为参数。
在函数内部,我们首先判断当前结点是否为空,如果为空,则直接返回。否则,我们先访问当前结点的值,然后递归访问左子树和右子树。这样就可以完成前序遍历了。
当然,中序遍历和后序遍历的递归实现与前序遍历类似,只需要改变访问结点的顺序即可。