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

完全二叉树的4种遍历方式

一张二叉树的图

 1,二叉树的特点

  1. 每个点p的左儿子是p*2,右儿子是p*2+1,可以分别表示为p<<1与p<<1|1
  2. 节点的序号是从左到右,从上到下增加的
  3. 每个点至多2个儿子(屁话(bushi))

2,先序遍历(根左右)

就是每次到子树的根节点,先存入这个节点,然后优先访问左儿子,左儿子访问到回来,再访问右儿子(不是亲生的(que ren))

 顺序1->2->4->5(正在回家的路上)->3->6

int t[N];//t表示树上节点
int cnt;
void build(int p)
{cout<<t[p];//每次存储根节点后进入左儿子build(p<<1);build(p<<1|1);//左儿子出来后再进入右儿子
}

3,中序遍历(左根右)

每次到子树的根节点,先进入左儿子,回来后在访问根,最后再访问右儿子

 顺序4->2->5->1->6->3

int t[N];//t表示树上节点
int cnt;
void build(int p)
{build(p<<1);//每次x先进入左儿子,出来后再存储根节点cout<<t[p];build(p<<1|1);//根节点存储后后再进入右儿子
}

4,后序遍历(左右根)

依次访问左右儿子,再回来访问根节点

顺序是4->5->2->3->6->1

int t[N];//t表示树上节点
int cnt;
void build(int p)
{build(p<<1);//每次x先进入左儿子build(p<<1|1);//再进入右儿子cout<<t[p];//最后存储根节点
}

5,层序遍历

就是一层一层访问,这次不再是遍历了,我们观察序号,其实

t[1]~t[n]就是点1~n的层序遍历

int t[N];//t表示树上节点
int cnt;
for (int i=1; i<=n; ++i)cout<<t[i]<<endl;

 

http://www.lryc.cn/news/44888.html

相关文章:

  • 【vue2】使用elementUI进行表单验证实操(附源码)
  • JUC之阻塞队列解读(BlockingQueue)
  • LCHub:ChatGPT4和低代码来临,程序员面临下岗?
  • 【Node.js】Express框架的基本使用
  • 使用docker 和 kubnernetes 部署单节点/多节点 kafka 环境
  • Linux使用:环境变量指南和CPU和GPU利用情况查看
  • 深入浅出 SSL/CA 证书及其相关证书文件(pem、crt、cer、key、csr)
  • Compose(1/N) - 概念 基本使用
  • 2023高质量Java面试题集锦:高级Java工程师面试八股汇总
  • MySQL多表查询 子查询效率(DQL语句)
  • Linux中 ps命令详解
  • 【Python语言基础】——Python 关键字
  • Java SE 基础(8)关键字和保留字
  • Thinkphp 6.0响应输出和重定向
  • Centos html 中文 显示为乱码
  • Helm学习笔记
  • 深入学习JavaScript系列(二)——作用域和作用域链
  • 【计算机视觉 | 目标检测】DETR风格的目标检测框架解读
  • 【LeetCode】剑指 Offer 41. 数据流中的中位数 p214 -- Java Version
  • CSS3 知识总结
  • 回溯算法37:解数独
  • 【蓝桥杯-筑基篇】动态规划
  • Unity利用Photon PUN2框架快速实现多人在线游戏实例分享
  • ChatGPT直出1.5w字论文查重率才30% - 基于物联网技术的智能家居控制系统设计与实现
  • 特斯拉的操作系统是用什么语言编写的?
  • C++学习8-C++提高编程
  • ubuntu安装git server
  • 物流云数据分析平台
  • 配置OBS存储功能、新搭建obs
  • 基于DPDK收包的suricata的安装和运行