二叉树的遍历(先序、中序、后序)附:C++实现及其应用

本文详细介绍了二叉树的三种基本遍历方法:前序、中序和后序遍历,并提供了每种遍历方法的C++实现代码。此外,还通过一个具体的例子展示了不同遍历方式的结果,并探讨了二叉树遍历在实际应用中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、概念

二、样例的图

三、3种遍历方式的遍历及C++遍历实现

四、对于上面那棵树,给出的三种遍历结果

五、二叉树遍历的应用

 


一、概念

        二叉树的遍历(Traversing binary tree)是指从根节点出发,按照某种次序访问二叉树中所有的节点,使得每个节点被依次访问且仅被访问一次。 

 

二、样例的图

                                                  

 

三、3种遍历方式的遍历及C++遍历实现

1、前序遍历(preorder traversal):先访问根节点-->再访问左子树-->再访问右子树

template <typename E>
void preorder(BinNode<E>* root){
	if(root == NULL) return;
	visit(root);
	preorder(root->left());
	preorder(root->right());
} 

2、中序遍历(inorder traversal):先访问左子树-->再访问根节点-->再访问右子树

template <typename E>
void inorder(BinNode<E>* root){
	if(root == NULL) return;
	inorder(root->left());
	visit(root);
	inorder(root->right());
} 

3、后序遍历(postorder traversal):先访问左子树-->再访问右子树-->再访问根节点

template <typename E>
void postorder(BinNode<E>* root){
	if(root == NULL) return;
	postorder(root->left());
	postorder(root->right());
	visit(root);
} 

 

四、对于上面那棵树,给出的三种遍历结果

1、先序遍历:A->B->D->F->G->H->I->E->C;

2、中序遍历:F->D->H->G->I->B->E->A->C;

3、后序遍历:F->H->I->G->D->E->B->C->A。

 

五、二叉树遍历的应用

1、求二叉树中节点数目

思路:一个非空子树的节点数等于它的根加上其左右子树的节点数目之和。

template <typename E>
int count(BinNode<E>* root){
	if(root == NULL) return 0;
	return 1 + count(root->left())
	         + count(root->right());
} 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值