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

39-算法打卡-二叉树-基础知识-第三十九天

1 二叉树基础知识分类

2 二叉树种类

2.1 满二叉树

如果一颗二叉树只有度为0的节点和度为2的结点,并且度为0的结点在同一层上,这棵二叉树就称之为满二叉树。

2.2 完全二叉树

完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层(h从1开始),则该层包含 1~ 2^(h-1) 个节点。
优先级队列:其实就是一个堆,堆就是一颗完全二叉树,同时保证了父子节点的顺序关系。

2.3 二叉搜索树 

二叉搜索树是有数值的,二叉搜索树是一个有序树。
1、若它的左子树不为空,则左子树上所有结点的值均小于它的根节点的值
2、若它的右子树不为空,则右子树上所有结点的值均大于它的根节点的值
3、它的左右子树分别为二叉排序树

2.4 平衡搜索树 

平衡二叉搜索树:又被称为AVL(Adelson-Velsky and Landis)树,且具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。

 

3 存储方式

3.1 链式存储

链式存储就是使用指针的方式存储,链式存储是通过指针把分布在各个地址的节点串联起来

 3.2 顺序存储

顺序存储是使用数组的方式存储,顺序存储的元素内存是连续分布的。
其实就将树按层序遍历,存储到数组中。

 4 遍历

二叉树主要有两种遍历方式:
深度优先:先往深处走,遇到叶子节点再往回走
广度优先:一层一层的去遍历。
深度优先一般使用递归、迭代法遍历,广度优先基本上是使用迭代法遍历
注:栈其实就是递归的一种实现结构,前中后序遍历的逻辑其实都是可以借助栈实现递归的方式来实现的;
广度优先遍历实现一般使用队列方式实现,这也是队列先进先出的特点所决定的,因为需要先进先出的结构,才能一层一层的来遍历二叉树。

4.1 深度优先

前序遍历:中左右
中序遍历:左中右
后序遍历:左右中
总结:前、中、后其实指的是中间节点的遍历顺序

 4.2 广度优先

层序遍历:一层一层的遍历完

 5 总结

二叉树是一种基础的数据结构,需要重点掌握,是算法面试中的常客,也是众多数据结构的基础。

http://www.xdnf.cn/news/361531.html

相关文章:

  • C#里创建一个MaterialDesign3的导航条
  • uni-app使用web-view组件APP实现返回上一页
  • 机器人手臂的坐标变换:一步步计算齐次矩阵过程 [特殊字符]
  • 商业 |阿里云又丢出了核弹
  • Webug4.0靶场通关笔记24- 第29关Webshell爆破
  • 华为OceanStor 5500 V3存储证书过期问题处理
  • 在SpringBoot中使用MQTT实现消息的订阅
  • Element-UI字体图标不显示
  • Oracle — 数据管理
  • LVGL源码学习之渲染、更新过程(2)---无效区域的处理
  • 电厂数据库未来趋势:时序数据库 + AI 驱动的自优化系统
  • 期货跟单软件如何对实盘进行风控?
  • go语言封装、继承与多态:
  • 【A2A】管中窥豹,google源码python-demo介绍
  • Go语言中 源文件开头的 // +build 注释的用法
  • 母亲节祝福网页制作
  • 推荐一个很方便的浏览器管理插件Wetab插件
  • 水印云:AI赋能,让图像处理变得简单高效
  • VSCode如何解决打开html页面中文乱码的问题
  • 工业软件自主化突围:RTOS 如何打破 “协议栈 - 控制器” 生态垄断
  • 零件画图实战提升案例(上)
  • 企业高性能WEB服务器—Nginx
  • 【论文阅读】基于客户端数据子空间主角度的聚类联邦学习分布相似性高效识别
  • 深度解析动态IP业务核心场景:从技术演进到行业实践
  • 住宅IP的深度解析与合理运用
  • 探索Stream流:高效数据处理的秘密武器
  • TOGAF 企业架构介绍(4A架构)
  • [javascript]取消异步请求
  • 26考研——中央处理器_指令执行过程(5)
  • qiankun微前端任意位置子应用