Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >二叉树前中后遍历

二叉树前中后遍历

作者头像
川川菜鸟
发布于 2021-10-18 08:39:01
发布于 2021-10-18 08:39:01
22100
代码可运行
举报
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include 
#include 
typedef char ElemType;//二叉树数组类型为字符

//二叉树定义
typedef struct node
{
	ElemType data;//节点信息
	struct node* lchild, * rchild;//左右儿子,增加,*parent双亲指针就是三叉链
}Bnode,*BTree;
//初始化二叉链
void InitBTree(BTree& BT)
{
	BT = NULL;
}
//创建二叉链
void CreateBTree(BTree &BT)//分别指向左右
{
	char data;
	data = getchar();
	if (data == '#')	BT = NULL;
	else
	{
		BT = (BTree)malloc(sizeof(Bnode));//分配空间
		BT->data = data;
		CreateBTree(BT->lchild);//分别创建左右节点
		CreateBTree(BT->rchild);
	}
}
//void visit(BTree p)
//{
//	printf_s("%c", p->data);//访问根节点
//}
//先序(根)遍历
void preorder(BTree p)
{
	if (p != NULL)
	{
		//visit(p);
		printf_s("%c", p->data);//访问根节点
		preorder(p->lchild);//遍历左
		preorder(p->rchild);//遍历右
	}
}
//中序(根)遍历
void inorder(BTree p)
{
	if (p != NULL);
	{
		inorder(p->lchild);//中根顺序遍历左子树
		//visit(p);//访问根节点
		printf_s("%c", p->data);//访问根节点
		inorder(p->rchild);
	}
}
//后根遍历
void postorder(BTree p)
{
	if (p != NULL)
	{
		postorder(p->lchild);//按后根遍历左子树
		postorder(p->rchild);
		//visit(p);
		printf_s("%c", p->data);//访问根节点
	}
}
int main()
{
	BTree bt;
	//printf_s("二叉树初始化中....");
	InitBTree(bt);//初始化树
	printf_s("请输入给定的先根序列:\n");
	CreateBTree(bt);//创建树
	printf_s("给定的二叉树先跟序列为:\n");
	preorder(bt);//先跟遍历
	printf_s("二叉树中序序列结果为:\n");
	inorder(bt);//中根遍历
	printf_s("二叉树后序序列为:\n");
	postorder(bt);//后根遍历
	return 0;
}

有问题留言

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/07/07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
那些未说出口的告白,终会顺着线索遍历到你的心底——数据结构算法之树算法习题试炼
求某层的结点个数、每层的结点个数、树的最大宽度等,都可采用与此题类似的思想。当然,此题可编写为递归算法,其实现如下:
盛透侧视攻城狮
2025/03/10
550
那些未说出口的告白,终会顺着线索遍历到你的心底——数据结构算法之树算法习题试炼
python算法与数据结构-二叉树的代码实现(46)
  上一篇我们对数据结构中常用的树做了介绍,本篇博客主要以二叉树为例,讲解一下树的数据结构和代码实现。回顾二叉树:二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)
Se7eN_HOU
2019/07/10
5400
python算法与数据结构-二叉树的代码实现(46)
树形结构--二叉树的遍历算法应用(十九)
一.遍历算法应用 1.输出二叉树中的结点 void PreOrder(BiTree root) { if(root != NULL) { printf("%d",root->data); // 假设数据为int类型 PreOrder(root->RChild); // 遍历左子树 PreOrder(root->RChild); // 遍历右子树 //上例为先序遍历,中序遍历和后序遍历,只是printf()位置不同。 }
花狗Fdog
2020/10/28
4640
二叉树的建立方法总结
之前已经介绍了二叉树的四种遍历(如果不熟悉请戳我),下面介绍一些二叉树的建立方式。首先需要明确的是,由于二叉树的定义是递归的,所以用递归的思想建立二叉树是很自然的想法。 1. 交互式问答方式 这种方式是最直接的方式,就是先询问用户根节点是谁,然后每次都询问用户某个节点的左孩子是谁,右孩子是谁。代码如下(其中字符'#'代表空节点): #include <cstdio> #include <cstdlib> using namespace std; typedef struct BTNode *Positi
llhthinker
2018/01/24
1.4K0
二叉排序树
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
喜欢ctrl的cxk
2019/11/08
4570
数据结构之树
对于树中的每个节点X,它的左子树中所有的关键字值小于X的关键字,而它的右子树中所有的关键字值大于X的关键字值。
心跳包
2020/08/31
2800
数据结构之树
数据结构与算法 -二叉树的遍历
在二叉树的一些应用中,常常要求在树中查找具有某种特征的结点,或者对树中全部结点逐一进行某种处理,这就需要对二叉树进行遍历。
越陌度阡
2020/11/26
5990
数据结构与算法 -二叉树的遍历
数据结构算法整理-05-二叉树
广义表表示 :L = (A (B (C, D), E ( , F) ) ) 可以得出
devi
2021/08/18
2690
4.3.1 二叉树的遍历
所谓二叉树的遍历,是指按照某条搜索路径访问树中的每个结点,使得每个几点均被访问一次,而且仅被访问一次。
week
2018/08/24
5180
二叉树
定义:二叉树是有限结点的集合 二叉树有五种形态,有四种表示方法,其中括号表示法是最重要的,下面的链式存储结构也是根据括号表示法来的== 二叉树的性质: 性质1:非空二叉树上的叶子节点数等于双分支节点数加1 性质2:非空二叉树的第i层上最多有2(i-1)个结点 性质3:高度位h的二叉树最多有2(h)-1个结点
废江_小江
2022/09/05
3040
二叉树
二叉树的性质和常用操作代码集合
二叉树的性质和常用操作代码集合 性质: 二叉树的性质和常用代码操作集合 性质1:在二叉树的第i层上至多有2^i-1个结点 性质2:深度为k的二叉树至多有2^k - 1个结点 性质3:对任意一棵二叉树T,若终端结点数为n0,而其度数为2的结点数为n2,则n0 = n2 + 1 满二叉树:深度为k且有2^-1个结点的树 完全二叉树:深度为k,结点数为n的二叉树,如果其结点1~n的位置序号分别与等高的满二叉树的结 点1~n的位置序号一一对应,则为完全二叉树
Steve Wang
2018/02/05
7180
排序二叉树及其遍历「建议收藏」
所谓建立排序二叉树就是,就是将各结点数据元素顺序插到一棵二叉树中,在插入的过程中,始终保持二叉树中每个结点的值都大于其左子树上每个结点的值,而小于或等于其右子树上每个结点的值,每个结点信息包括结点数据(结点值)、左子树指针、右子树指针。
全栈程序员站长
2022/09/15
3080
树和二叉树的存储结构的实现(C/C++实现)
存档: 1 #include <iostream.h> 2 #include <stdio.h> 3 #include <stdlib.h> 4 #define max 20 5 typedef char elemtype; 6 #include "tree.h" 7 void main() 8 { 9 btree t,p; 10 char x; 11 int i=0,num=0; 12 cout<<"(1)初始化二叉树initbt(t):"<<endl;
Angel_Kitty
2018/04/09
8160
树和二叉树的存储结构的实现(C/C++实现)
二叉树四种遍历,根据前中,后中遍历序列求二叉树
采用指针+结点来存储二叉树,链表栈也是如此, BTNode本身也是一个指针节点,可以指向和其一样结构的地址,所以,struct结构体中的结点也是struct结构体类型
废江_小江
2022/09/05
2280
我的思念像满二叉树般疯长,每个空指针都指向你的方向——全程动画可视化数据结构算法之二叉树
盛透侧视攻城狮
2025/03/02
830
我的思念像满二叉树般疯长,每个空指针都指向你的方向——全程动画可视化数据结构算法之二叉树
【C++数据结构——树】二叉树的遍历算法(头歌教学实验平台习题) 【合集】
二叉树是树形结构的一种特殊形式,它的每个节点最多有两个子节点,分别称为左子节点和右子节点,对应的子树就是左子树和右子树。二叉树可以为空(即没有节点),也可以由根节点、左子树和右子树组成复杂的树形结构,这种结构在很多数据处理场景中有着重要应用,例如表达式解析、文件系统目录结构模拟、搜索算法实现等。
Rossy Yan
2024/12/27
1460
【C++数据结构——树】二叉树的遍历算法(头歌教学实验平台习题) 【合集】
7-1 树结构 和 二叉树
前面讲的都是 线性存储结构,而树是一种典型的非线性存储结构,一个元素可以有多个直接后继元素。
TeeyoHuang
2019/07/02
6160
7-1 树结构 和 二叉树
如何提高编程能力?(下)
同时也说明了一个问题对于z=(x++,y++,++y);中,y++执行完后,再去执行++y,即y++后,y变为2,++y变为3.而不是先y++,只按照赋值,后面+1未操作,这样是不对的。 带括号记住逗号表达式中取最后一个为逗号表达式的值,不带括号,要注意赋值运算或者其他运算,自左向右进行。
公众号guangcity
2019/09/20
8580
如何提高编程能力?(下)
实验三 二叉树的基本操作(建立)及遍历
实验三 二叉树的基本操作(建立)及遍历 实验目的 1.学会实现二叉树结点结构和对二叉树的基本操作。 2.通过对二叉树遍历操作的实现,理解二叉树各种操作,学会利用递归方法编写对二叉树等类似递归数据结构进行处理的算法。 实验要求 1.认真阅读和掌握和本实验相关的教材内容。 2.编写完整程序完成下面的实验内容并上机运行。 实验内容 1.编写程序输入二叉树的结点个数和结点值,构造下图所示的二叉树。 2.编写程序,采用中序遍历的递归和非递归算法对此二叉树进行遍历。
谙忆
2021/01/20
7410
实验三 二叉树的基本操作(建立)及遍历
二叉树层次遍历算法——C/C++
层次遍历基础需要了解二叉树、队列。 二叉树基本运算:https://blog.csdn.net/weixin_42109012/article/details/92000919 顺序队基本运算:https://blog.csdn.net/weixin_42109012/article/details/92104948
全栈程序员站长
2022/09/06
7000
二叉树层次遍历算法——C/C++
推荐阅读
相关推荐
那些未说出口的告白,终会顺着线索遍历到你的心底——数据结构算法之树算法习题试炼
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验