当前位置: 首页 > news >正文

公司网站打开很慢wordpress 瀑布流分页

公司网站打开很慢,wordpress 瀑布流分页,手机设计图纸软件,商城分销怎么做目录 前言 二叉树的链式存储结构 二叉树的遍历 1.前序遍历 2.中序遍历 3.后序遍历 二叉树的创建 创建一个新节点的函数接口 1.创建二叉树返回根节点 2.已有根节点,创建二叉树 3.已有数据,创建二叉树 前言 在此之前我们学习了二叉树的定义和储…

 目录

前言

二叉树的链式存储结构 

二叉树的遍历

 1.前序遍历

2.中序遍历

3.后序遍历

 二叉树的创建

创建一个新节点的函数接口

1.创建二叉树返回根节点 

2.已有根节点,创建二叉树

3.已有数据,创建二叉树


前言

        在此之前我们学习了二叉树的定义和储存方式,还学了一种特殊的二叉树---堆,那今天我们就正式开始去学习二叉树了,是通过链式结构储存的二叉树,下面我会详细讲解二叉树的创建和遍历方法。

相关链接

二叉树的基础知识点:数据结构-----树和二叉树的定义与性质_Gretel Tade的博客-CSDN博客

堆的相关方法代码实现:数据结构-----堆(完全二叉树)_Gretel Tade的博客-CSDN博客

二叉树的链式存储结构 

#include<stdio.h>
#include<stdlib.h>typedef char ElemType;
typedef struct binarytreenode {ElemType data;	//数据域struct binarytreenode* left;	//左指针 struct binarytreenode* right;	//右指针
}BTnode;

二叉树的遍历

 这里就会有人问了,咦二叉树都没创建呢,就开始学遍历?别急,下面听我慢慢说,二叉树的创建是要利用的遍历的,这么说吧,遍历是贯穿整个二叉树的基础,没有遍历,就不会有二叉树。二叉树的遍历分三种:前序遍历中序遍历后序遍历,下面我们接着看。

 1.前序遍历

在一个二叉树中,前序遍历就是按照二叉树的外围跑一圈,所以从根节点开始,然后到左节点,跑完全部的左节点,就进入到右节点,最后回到根部节点。如下图所示:

前序遍历的顺序为:根左右

前序遍历结果为: A B D H I E J C F K G 

 动图演示:

 代码实现

//1.二叉树的前序遍历
void Btree_prev(BTnode* T) {	//T 是这个树的根节点if (!T) {return;}printf("%c ", T->data);		//先输出遍历结果	Btree_prev(T->left);		//左边节点进入递归Btree_prev(T->right);		//右边节进入递归
}

2.中序遍历

中序遍历可以看作是,这个二叉树上的每一个节点垂直落下来,最后排成一排就是遍历完成的结果,如下图所示:

中序遍历的顺序为:左根右 

中序遍历结果:H D I B E J A F K C G 

 代码实现

//2.二叉树的中序遍历
void Btree_mid(BTnode* T) {  //T 是这个树的根节点if (!T) {return;}Btree_prev(T->left);printf("%c ", T->data);Btree_prev(T->right);
}

3.后序遍历

后序遍历可以看作是一个摘葡萄的过程,先是把下面的葡萄摘完,然后再去摘上面的葡萄,也就是把子节点遍历完成了之后,最后去遍历根节点。如下图所示:

 后序遍历的顺序为:左右根 

后序遍历的结果:H I D J E B K F G C A 

代码实现:

//3.后续遍历
void Btree_final(BTnode* T) {	//T 是这个树的根节点if (!T) {return;}Btree_final(T->left);Btree_final(T->right);printf("%c ", T->data);
}

 二叉树的创建

        先学会了二叉树的遍历,我们才可以去接着学习怎么来创建一个二叉树。创建二叉树是边遍历边创建的,在创建的过程中遍历,在遍历的过程中创建。二叉树的创建可以通过前面的三种遍历方式去创建,前序遍历、中序遍历、后序遍历都可以去创建一个二叉树,只是长相不太相同,这里我主要去通过前序遍历来创建二叉树,如果你们想通过其他两种方法只需要把代码稍微修改一下就可以实现了,下面我会详细讲解创建二叉树的常见三种写法。

概要说明:

在创建一个二叉树时,我获取到的字符序列是  ABD#E###CF### ,其中#是表示空节点的,字母是表示有数据的节点  那么这个二叉树前序遍历创建后的样子应该如下所示:

创建一个新节点的函数接口

//创建一个新节点函数接口
BTnode* Create_node(ElemType data) {BTnode* new_node = (BTnode*)malloc(sizeof(BTnode));if (!new_node) {printf("ERROR\n");exit(-1);}//依次赋值初始化new_node->data = data;new_node->left = NULL;new_node->right = NULL;return new_node;
}

下面我就开始介绍创建二叉树的三种常见写法。  

1.创建二叉树返回根节点 

//创建二叉树返回根节点
BTnode* Create_btree_2() {char ch;ch = getchar();BTnode* root = NULL;while (ch == ' ')//输入空格无效,重新输入{printf("请重新输入\n");scanf("%c", &ch);}if (ch != '#'){root = Create_node(ch);root->left = Create_btree_2();	//左节点递归创建root->right = Create_btree_2();	//右节点递归创建}return root;
}

2.已有根节点,创建二叉树

//传入根节点,然后进行创建
void Create_btree_3(BTnode** T) {char ch;scanf("%c",&ch);while(ch==' ')	//输入空格无效,重新输入{printf("请重新输入\n");scanf("%c", &ch);}if (ch == '#')(*T) = NULL;else {(*T) = Create_node(ch);Create_btree_3(&(*T)->left);Create_btree_3(&(*T)->right);}
}

3.已有数据,创建二叉树

对比上面前两种写法不同,这个是已有数据的情况下,通过这个数据来去创建这个二叉树,而上面两种方法是边输入边创建二叉树。

//00_1已有数据,然后创建二叉树,返回根节点
BTnode* Create_btree_1(ElemType *&data){	//&data对变量的引用BTnode* node=NULL;if (*data!='#' && data!= NULL) {node = Create_node(*data);node->left = Create_btree_1(++data);node->right = Create_btree_1(++data );}return node;
}

 注意:这里要用到对变量的引用(取别名)来创建,否则会出现错误

 好了,以上就是本期的全部内容了,下一期我们接着学习二叉树的相关操作方法,下次见咯!

分享一张壁纸: 

http://www.yayakq.cn/news/620452/

相关文章:

  • 网站怎么做图片转换wordpress 会员名字
  • 做网站站长一年能赚多少钱网站建设初期的宣传
  • 建立网站的目录结构应注意哪些问题图片素材网站怎么做
  • 建设银行人才招聘官方网站安卓ui用什么软件设计
  • 做720效果的还有哪个网站ui界面图标
  • 定西市小企业网站建设建设交互设计就业前景
  • 网站如何防注册机小蓝鸟pnv加速器
  • 高明网站设计案例台州百度关键词优化
  • dw制作网站网页模板成都高端网页开发公司
  • 网站建设中出现的错误代码公司网站建设计入科目
  • 环县网站怎么做广州珠吉网站建设
  • pc网站手机网站sem竞价托管公司
  • 长沙市住房和城乡建设部网站推广百度百科
  • 做网络调查的网站赚钱wordpress 存储视频
  • 电商网站如何设计内容android编程语言
  • 设计精美的中文网站集团网站建设思路
  • 公司官方网站建设申请制作网页一般用什么来设计分割页面
  • 长沙网站建设qq交流群网站产品标签文章标签怎么做
  • 自适应网站建设沈阳黑客入侵别人网站做seo
  • 大连网站开发公司电话店铺名称设计logo设计
  • 开发网站网络公司有哪些定陶区城乡和住房建设局网站
  • 济南微信网站网站顶部广告素材
  • 软件开发公司规章制度国外常用的seo站长工具
  • 高端品牌网站有哪些公司名字大全三个字
  • 搭建网站是什么做网站开发学什么软件
  • 跨境购网站建设东莞市建设工程检测中心网站
  • 永久免费自助建网站网站的优点和缺点
  • 网站访问量咋做公司变更法人需要多少费用
  • 最短的网站怎么入驻电商平台
  • 高端自适应网站建设禹城网站建设费用