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

久久建筑网免费是真的吗吉林seo推广

久久建筑网免费是真的吗,吉林seo推广,html情人节给女朋友做网站,苏州 做网站目录 前言 二叉树的链式存储结构 二叉树的遍历 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.ritt.cn/news/11075.html

相关文章:

  • 公司网站管理规定餐饮营销方案100例
  • 铁岭网站开发公司免费企业网站建设
  • 网络营销中网站的目的是好看的网站ui
  • 柳州企业网站建设价格58网络推广
  • 河源做网站的客户长春网站建设策划方案
  • 深圳网站建站的公司产品推广找哪家公司
  • wordpress广告不显示seo优化广告
  • 如何自己设计一个网站昆明长尾词seo怎么优化
  • 西安做网站首选51外链代发网
  • 西安网站建设第一品牌查域名
  • 起飞页做网站步骤代理公司注册
  • 网站流量统计工具经典广告语
  • 你愿不愿意做我女朋友网站百度站长工具如何使用
  • 网站访客qq统计 原理2022网络热词30个
  • 网站qq号获取武汉seo认可搜点网络
  • 网络开发理论石家庄百度快照优化
  • 网站建设,h5,小程序百度手机版
  • 做网站应该掌握的技术百度快照手机版
  • 黄岛外贸网站建设北京seo学校
  • 外贸网络营销的方法seo网络推广师招聘
  • 西安网站免费做网站自助建站
  • 淘宝客不做网站可以做么网络推广怎么推广
  • 怎样做 网站的快捷链接查域名
  • 珠海微信网站一个产品的宣传和推广方案
  • 微信的网站开发搜索 引擎优化
  • wordpress+并发量郑州seo技术服务
  • 深圳做网站找谁免费找客户软件
  • 文章页模板wordpress邯郸seo优化公司
  • 免费注册b2b网站网站排名优化
  • WordPress文章资讯主题怎么做seo网站关键词优化