首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >二叉树的递归遍历

二叉树的递归遍历

作者头像
大忽悠爱学习
发布于 2021-03-08 11:49:31
发布于 2021-03-08 11:49:31
9740
举报
文章被收录于专栏:c++与qt学习c++与qt学习

遍历定义:

遍历用途:

遍历方法:

先处理每个根的左子树,再到右子树

``

先序遍历

代码语言:javascript
复制
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
//二叉树的递归遍历
struct BinaryNode 
{
	//数据域
	char ch;
	//指针域
	BinaryNode* lchild; //指向左孩子的指针
	BinaryNode* rchild; //指向右孩子的指针
};
//递归遍历:传入根结点指针
void recursion(BinaryNode* root)
{
	//先序遍历
	if (root == NULL)
		return;
		//先根再左再右
	printf("%c ", root->ch);
	recursion(root->lchild);
	recursion(root->rchild);
}
void output()
{
	BinaryNode Anode = { 'A',NULL,NULL };
	BinaryNode Bnode = { 'B',NULL,NULL };
	BinaryNode Cnode = { 'C',NULL,NULL };
	BinaryNode Dnode = { 'D',NULL,NULL };
	BinaryNode Enode = { 'E',NULL,NULL };
	BinaryNode Fnode = { 'F',NULL,NULL };
	BinaryNode Hnode = { 'H',NULL,NULL };
	BinaryNode Gnode = { 'G',NULL,NULL };
	//建立关系
	Anode.lchild = &Bnode;
	Anode.rchild = &Fnode;

	Bnode.rchild = &Cnode;
	Cnode.lchild = &Dnode;
	Cnode.rchild = &Enode;

	Fnode.rchild = &Gnode;
	Gnode.lchild =&Hnode;
   //递归遍历算法
	recursion(&Anode);
}
int main()
{
	output();
	return 0;
}

中序遍历

代码语言:javascript
复制
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
//二叉树的递归遍历
struct BinaryNode 
{
	//数据域
	char ch;
	//指针域
	BinaryNode* lchild; //指向左孩子的指针
	BinaryNode* rchild; //指向右孩子的指针
};
//递归遍历:传入根结点指针
void recursion(BinaryNode* root)
{
	//中序遍历
	if (root == NULL)
		return;
		//先左再根再右
	recursion(root->lchild);
	printf("%c ", root->ch);
	recursion(root->rchild);
}
void output()
{
	BinaryNode Anode = { 'A',NULL,NULL };
	BinaryNode Bnode = { 'B',NULL,NULL };
	BinaryNode Cnode = { 'C',NULL,NULL };
	BinaryNode Dnode = { 'D',NULL,NULL };
	BinaryNode Enode = { 'E',NULL,NULL };
	BinaryNode Fnode = { 'F',NULL,NULL };
	BinaryNode Hnode = { 'H',NULL,NULL };
	BinaryNode Gnode = { 'G',NULL,NULL };
	//建立关系
	Anode.lchild = &Bnode;
	Anode.rchild = &Fnode;

	Bnode.rchild = &Cnode;
	Cnode.lchild = &Dnode;
	Cnode.rchild = &Enode;

	Fnode.rchild = &Gnode;
	Gnode.lchild =&Hnode;
   //递归遍历算法
	recursion(&Anode);
}
int main()
{
	output();
	return 0;
}

后序遍历

代码语言:javascript
复制
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
//二叉树的递归遍历
struct BinaryNode 
{
	//数据域
	char ch;
	//指针域
	BinaryNode* lchild; //指向左孩子的指针
	BinaryNode* rchild; //指向右孩子的指针
};
//递归遍历:传入根结点指针
void recursion(BinaryNode* root)
{
	//中序遍历
	if (root == NULL)
		return;
	//先左后右再根
	recursion(root->lchild);
	recursion(root->rchild);
	printf("%c ", root->ch);
}
void output()
{
	BinaryNode Anode = { 'A',NULL,NULL };
	BinaryNode Bnode = { 'B',NULL,NULL };
	BinaryNode Cnode = { 'C',NULL,NULL };
	BinaryNode Dnode = { 'D',NULL,NULL };
	BinaryNode Enode = { 'E',NULL,NULL };
	BinaryNode Fnode = { 'F',NULL,NULL };
	BinaryNode Hnode = { 'H',NULL,NULL };
	BinaryNode Gnode = { 'G',NULL,NULL };
	//建立关系
	Anode.lchild = &Bnode;
	Anode.rchild = &Fnode;

	Bnode.rchild = &Cnode;
	Cnode.lchild = &Dnode;
	Cnode.rchild = &Enode;

	Fnode.rchild = &Gnode;
	Gnode.lchild =&Hnode;
   //递归遍历算法
	recursion(&Anode);
}
int main()
{
	output();
	return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/03/04 ,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 先处理每个根的左子树,再到右子树
  • 先序遍历
  • 中序遍历
  • 后序遍历
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档