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

网站建设这门课好学吗vs简易新闻建设网站

网站建设这门课好学吗,vs简易新闻建设网站,网站后台编辑器控件下载,建筑公司企业技术负责人岗位职责目录 1.定义 2.存储 顺序存储 链式存储 代码示例 3.遍历 知识回顾 静态实现方法下的遍历 1.前序遍历(又称先序遍历) ​编辑 2.中序遍历 3.后序遍历 4.层序遍历(宽度优先遍历) 1.定义 参见100.【C语言】数据结构之二叉树的基本知识文章 2.存储 复习参见101.【C语…

目录

1.定义

2.存储

顺序存储

链式存储

代码示例

3.遍历

知识回顾

静态实现方法下的遍历

1.前序遍历(又称先序遍历)

​编辑

2.中序遍历

3.后序遍历

4.层序遍历(宽度优先遍历)


1.定义

参见100.【C语言】数据结构之二叉树的基本知识文章

2.存储

复习参见101.【C语言】数据结构之二叉树的堆实现(顺序结构) 1为动态存储,本文将使用之前文章讲过的静态方法来实现

顺序存储

设从根节点开始编号为1

1.存储完全二叉树:因为父子结点之间的编号可以用公式算出来,因此可根据编号依次将结点放在数组对应的位置上即可

2.存储非完全二叉树:补成完全二叉树再去编号,例如下图,空间利用率不高

不建议对非完全二叉树或满二叉树使用顺序存储,可以用堆或者线段树

链式存储

定义:通过指针来表示二叉树中节点之间关系的存储方式

动态实现参见106.【C语言】数据结构之二叉树的三种递归遍历方式文章,本文讲静态实现

静态实现需要两个数组left[N]和right[N]用于存储每个节点的左右孩子节点

例如下图:

设数组下标为节点的编号,则存储结构left[N]和right[N]为:

(如果没有孩子节点,那么存0)

代码示例

有一个n(n<=10^6)个节点的二叉树.给出每个节点的两个子节点编号(均不超过n),建立一棵二叉树(根节点的编号为1),如果是叶子节点,则输入0 0

输入描述:第一行一个整数n,表示节点数;之后n行,第i行两个整数l和r,分别表示节点的左右子节点编号.若l=0则表示无左子节点,r=0同理.

#include <iostream>
using namespace std;
const int N=1e3+10;
int _left[N],_right[N],n;
int i=1;//根节点编号为1
int main()
{cin>>n;while(n--){cin>>_left[i]>>_right[i];i++;}return 0;
}

这里_left和_right前都加了"_"避免冲突,因为Dev C++提示[Error] reference to 'left' is ambiguous和[Error] reference to 'right' is ambiguous

3.遍历

知识回顾

106.【C语言】数据结构之二叉树的三种递归遍历方式

静态实现方法下的遍历

由于竞赛中追求运行速度快,因此不用动态分配内存来实现,本文用静态实现方法来遍历,可利用DFS的思想实现三种遍历方式,以此图作为测试用例

窗口中输入

6

2 4

3 0

0 0

5 6

0 0

0 0

1.前序遍历(又称先序遍历)

代码

#include <iostream>
using namespace std;
const int N=1e3+10;
int _left[N],_right[N],n;
int i=1; 
void preorder(int x)
{cout<<x<<"-->";//先访问根if (_left[x])//左子树不为空 preorder(_left[x]);if (_right[x])//右子树不为空 preorder(_right[x]); 
}int main()
{cin>>n;while(n--){cin>>_left[i]>>_right[i];i++;}preorder(1);//设根节点编号为1 cout<<"结束";return 0;
}

执行结果

2.中序遍历

#include <iostream>
using namespace std;
const int N=1e3+10;
int _left[N],_right[N],n;
int i=1; 
void inorder(int x)
{if (_left[x])//左子树不为空 inorder(_left[x]);cout<<x<<"-->";//访问根if (_right[x])//右子树不为空 inorder(_right[x]); 
}int main()
{cin>>n;while(n--){cin>>_left[i]>>_right[i];i++;}inorder(1);//设根节点编号为1 cout<<"结束";return 0;
}

执行结果

3.后序遍历

代码

#include <iostream>
using namespace std;
const int N=1e3+10;
int _left[N],_right[N],n;
int i=1; 
void postorder(int x)
{if (_left[x])//左子树不为空 postorder(_left[x]);if (_right[x])//右子树不为空 postorder(_right[x]); cout<<x<<"-->";//访问根
}int main()
{cin>>n;while(n--){cin>>_left[i]>>_right[i];i++;}postorder(1);//设根节点编号为1 cout<<"结束";return 0;
}

执行结果

4.层序遍历(宽度优先遍历)

和 文章一样,利用队列即可,但和无根树不同的是:二叉树不需要状态数组bool st[N]来标记节点是否访问过,因为二叉树是有序树

代码

#include <iostream>
#include <queue>
using namespace std;
const int N=1e3+10;
int _left[N],_right[N],n;
int i=1; 
void bfs(int x)
{queue<int> q;q.push(x);while(!q.empty()){int tmp=q.front();q.pop();cout<<tmp<<"-->";if (_left[tmp])//左子树不为空q.push(_left[tmp]);if (_right[tmp])//右子树不为空q.push(_right[tmp]);				}}int main()
{cin>>n;while(n--){cin>>_left[i]>>_right[i];i++;}bfs(1);cout<<"结束";return 0;
}

执行结果


文章转载自:

http://a6gmqsq7.ypcbm.cn
http://S2vKfBq0.ypcbm.cn
http://xET2y5TP.ypcbm.cn
http://lLa1h5jZ.ypcbm.cn
http://q0O36Z2W.ypcbm.cn
http://RgwVz6w2.ypcbm.cn
http://Idk7T0ZM.ypcbm.cn
http://n1YTgEYt.ypcbm.cn
http://FBy00ESa.ypcbm.cn
http://zxekPHYE.ypcbm.cn
http://JW56xO9i.ypcbm.cn
http://bfN8PTq8.ypcbm.cn
http://JclSz7Ek.ypcbm.cn
http://vmf6KcU0.ypcbm.cn
http://9cxjCwce.ypcbm.cn
http://rVOhzBjr.ypcbm.cn
http://hvRbodY8.ypcbm.cn
http://2GWHv0Z7.ypcbm.cn
http://eVwgHmiN.ypcbm.cn
http://NVAhoACq.ypcbm.cn
http://KFC7NAJQ.ypcbm.cn
http://rRDzjSve.ypcbm.cn
http://cxmb9a5M.ypcbm.cn
http://2q0vD7A2.ypcbm.cn
http://8WDp892Q.ypcbm.cn
http://3a4XJYve.ypcbm.cn
http://hagcdiv3.ypcbm.cn
http://14NZbyYk.ypcbm.cn
http://eyS3uNRV.ypcbm.cn
http://MFk1l7Yt.ypcbm.cn
http://www.dtcms.com/wzjs/636317.html

相关文章:

  • 网站导航界面网站网络推广方法
  • 中英切换的网站咋做甘肃省建设厅执业资格注册网站
  • 网站扁平化结构和树形结构网站运营 网站建设
  • 安国网站建设办公室装修费用会计分录
  • 中山网站建设华联在线wordpress加载进度条
  • 二级域名搭wordpress上海做网站优化的公司
  • 同性恋色做视频网站有哪些有哪些做室内设计好用的网站
  • 沈阳高端网站制作公司搜狗推广下架
  • iis网站改端口网站开发建设哪家好
  • 服装网都有哪些网站芜湖效能建设网站
  • 制作网站演示网站建设全过程
  • 建立网站的平台做英文题的网站
  • 乡镇网站建设和培训静态中英文网站怎么做
  • 猪八戒网站建设报价建设网站是否等于开展网络营销
  • 有了源码可以做网站吗珠宝类网站建设
  • 网站备案号在哪热转印 东莞网站建设
  • 淘宝联盟网站备案网站建设+公司
  • 查询网站怎么做网页设计页面代码
  • 榆林做网站标识牌设计
  • 自己做网站需要购买服务器吗wordpress的seo作用
  • 做调查可以赚钱的网站国外seo比较好的博客网站
  • 西安网站建设中企建站网站建设 美橙
  • 网站建设参考书安徽建设相关网站
  • 网站被攻击怎么让百度重新蜘蛛自动抓手工制作香囊
  • 常州做网站推广传奇发布网站排行
  • 南阳企业网站制作网站建设合同不给版权
  • 慈溪想做网站的公司文化馆 网站 设计
  • 网站开发软件系统设计公司logo大全
  • 淄博网站制作设计怎么做免费网站推广
  • 廊坊制作网站公司同一源代码再建设一个网站