二叉树遍历

先序遍历:访问根结点,先序遍历左子树,先序遍历右子树;

中序遍历:中序遍历左子树,访问根结点,中序遍历右子树;

后序遍历:后序遍历左子树,后序遍历右子树,访问根结点;

从上面的定义看出是个递归的过程:

下面以中序遍历静态链式二叉树为例:

#include<stdio.h>

typedef struct node
{
	struct node * lchild;
	struct node * rchild;
	char data;
}*jie;
void Show(jie p);
int main()
{
	jie A=new struct node;
	jie B=new struct node;
	jie C=new struct node;
	jie D=new struct node;
	jie E=new struct node;
	jie F=new struct node;
	jie G=new struct node;

	A->data='A';
	A->lchild=B;
	A->rchild=C;
	B->data='B';
	B->lchild=D;
	B->rchild=E;
	C->data='C';
	C->lchild=F;
	C->rchild=G;
	D->data='D';
	D->lchild=NULL;
	D->rchild=NULL;
	E->data='E';
	E->lchild=NULL;
	E->rchild=NULL;
	F->data='F';
	F->lchild=NULL;
	F->rchild=NULL;
	G->data='G';
	G->lchild=NULL;
	G->rchild=NULL;
	Show(A);
	return 0;
}
void Show(jie p)
{
	if(p->lchild!=NULL)
	{
		Show(p->lchild);
	}
	printf("%c",p->data);
	if(p->rchild!=NULL)
	{
		Show(p->rchild);
	}
}

要改为其他方式遍历的话就是换一下调用递归函数的先后顺序就行了;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值