c语言实现二叉树的遍历
时间: 2023-12-21 18:04:59 浏览: 36
以下是C语言实现二叉树遍历的方法:
1. 二叉树的先序遍历(递归实现)
```c
void PreOrderTraverse(BiTree T) {
if (T) {
printf("%d ", T->data); //访问当前结点
PreOrderTraverse(T->lchild); //遍历当前结点的左子树
PreOrderTraverse(T->rchild); //遍历当前结点的右子树
}
}
```
2. 二叉树的中序遍历(递归实现)
```c
void InOrderTraverse(BiTree T) {
if (T) {
InOrderTraverse(T->lchild); //遍历当前结点的左子树
printf("%d ", T->data); //访问当前结点
InOrderTraverse(T->rchild); //遍历当前结点的右子树
}
}
```
3. 二叉树的后序遍历(递归实现)
```c
void PostOrderTraverse(BiTree T) {
if (T) {
PostOrderTraverse(T->lchild); //遍历当前结点的左子树
PostOrderTraverse(T->rchild); //遍历当前结点的右子树
printf("%d ", T->data); //访问当前结点
}
}
```
4. 二叉树的中序遍历(非递归实现)
```c
void InOrderTraverse(BiTree T) {
BiTree p = T;
Stack s;
InitStack(&s); //初始化栈
while (p || !StackEmpty(s)) {
if (p) {
Push(&s, p); //将当前结点入栈
p = p->lchild; //遍历当前结点的左子树
} else {
Pop(&s, &p); //弹出栈顶元素
printf("%d ", p->data); //访问当前结点
p = p->rchild; //遍历当前结点的右子树
}
}
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)