二叉树的遍历


根据二叉树的构成,我们可以进行如下遍历(L:遍历左子树,D:访问根节点,R:遍历右子树)
DLR【先序遍历,先遍历根节点】
LDR【中序遍历,中间遍历根节点】
LRD【后序遍历,最后遍历根节点】
DRL(X)
RDL(X)
RLD(X)
按照我们人们的习惯都是从左向右,所以后三种遍历方法被我们摒弃掉了



先序遍历【先根序遍历】
若二叉树非空
1)先访问根节点。
2)先序遍历左子树
3)先序遍历右子树
若二叉树空
遍历结束
在这里插入图片描述
先序遍历的结果:
ABDEGCF



中序遍历【中根序遍历】
若二叉树非空
1)中序遍历左子树
2)访问根节点
3)中序遍历右子树

在这里插入图片描述
中序遍历的结果
DBGEACF



后序遍历【后根序遍历】
1)后序遍历左子树
2)后序遍历右子树
3)访问根节点
在这里插入图片描述
后序遍历的结果
DGEBFCA



#define 0 NULL

typedef struct BTreeNode{
	char date;
	struct BTreeNode *lchild, *rchile;
}BTNode, *BTree;

//先序遍历
void preoreder(BTree BT){
	if (BT != NULL){
		visit(BT);
		preorder(BT->lchild);
		preorder(BT->rchile);
	}
} 
//中序遍历
void inorder(BTree BT){
	if (BT != NULL){
		inorder(BT->lchild);
		vister(BT);
		inorder(BT->rchile);
	}
}
//后序遍历
void postorder(BTree BT){
	if (BT != 0){
		postorder(BT->lchild);
		postorder(BT->rchile);
		vister(BT);
	}
}


[思考小题:什么样的二叉树它的先序遍历和中序遍历的结点访问次序是相同的呢?】
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值