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

树和二叉树(概念 结构)

树的概念和结构

  树的概念

树是非线性的数据结构,他是由N个(N>=0)节点组成的一个具有层次关系的集合:

图中表示的都是树。

有一个特殊的结点,称为根结点,根节点没有前驱结点,其余结点被分成M(M>0)个互不相交的集合


节点的度:
叶子节点:

分支节点(非终端节点):

父亲节点:

子节点(孩子节点):

兄弟节点:

树的度:

节点的层次:

树的高度(深度):

节点的祖先(祖先节点):

树的结构

树的结构比较线性表的结构复杂很多,要存储链接起来特别麻烦,要保证数据的存储,也要保证每个结点与结点之间的关系。表示的方法很多,我最了解的也是最简单的方法就是,孩子兄弟表示法。

定义结构:

tupedef int TreeDataType;
struct treenode
{
    struct treenode* child;  //链接孩子节点
    struct treenode* brother;//链接兄弟节点
    TreeDataType data;
}; 

最常见的运用场景就是文件系统的目录树结构

二叉树的概念和结构

二叉树的概念

二叉树是节点一个有限集合,

二叉树的所有节点度不大于2,

二叉树的子树有左右之分,次序不能颠倒,因此二叉树也是有序树

可以为空,也可以是由一个根节点加上两颗左子树和右子树的二叉树组成的。

特殊的二叉树

满二叉树:一个二叉树,每一层的节点都是最大值,那这个二叉树就是满二叉树,满二叉树的节点是2^k-1(K是这颗二叉树的层数)。

完全二叉树:完全二叉树就是满二叉树为满情况下的,需要注意的是每个节点都与深度为K的满二叉树中编号从1至N的节点一一对应。

二叉树的性质

一颗非空的二叉树第i层上最多有2^(i-1)个节点(第一层为1的话)。如果第一层为0,则第i层最多有2^i个节点;

二叉树深度为h的树,最多节点数为2^h - 1(第一层为1) 

度为0的节点就是叶子节点,我们称为n0,度为2的节点就是分支节点为n2,度为1的节点为n1,

则叶子节点的个数为 n0 = n2 + 1;

根据观察可以看出n0永远比n2多一个, n1为1或者0;

 

根节点第一层为1, n个节点的满二叉树的深度为多少, h = log(n+1);(以2为底的logn)

二叉树的储存结构

二叉树一般可以使用两种结构储存,顺序结构和链式结构。

顺序结构:

链式结构:


http://www.kler.cn/a/420949.html

相关文章:

  • JAVA |日常开发中Servlet详解
  • JAVA中HashMap、TreeMap、LinkedHashMap 的用法与注意事项
  • C_字符串的一些函数
  • flask的第一个应用
  • vscode 如何支持点击跳转函数,以C++为例,Python等其它编程语言同理,Visual Studio Code。
  • 我们来学mysql -- 事务并发之脏写(原理篇)
  • 手机租赁系统开发全攻略 创新服务助力企业智能转型
  • 库存管理如何做到“先进先出”?
  • delphi 12 idhttpsever(S)+idhttp(C) 实现简单的JSON API服务
  • Navicat连接SQL Server
  • 初始Python篇(9)—— 函数
  • Creating Server TCP listening socket *:6379: bind: No error
  • Logistic Regression(逻辑回归)、Maximum Likelihood Estimatio(最大似然估计)
  • 经典图论之道路与航线
  • 【阿来来gis规划师工具箱说明书】b03要素信息写入字段
  • Scala的正则表达式
  • 便携微型充气泵方案开发设计
  • Node.js JWT认证教程
  • 前端如何不引入第三方插件实现pdf预览功能?
  • 开启智能 BI 新纪元:生成式 AI 工具的探索与实践
  • 微信小程序踩坑指南(一)wx:for的坑
  • 【笔记2-1】ESP32:基于vscode的espidf插件的开发环境搭建
  • FPGA设计-基于SJA1000的can控制器设计
  • Mybatis 学习 之 XML 手册
  • debian ubuntu armbian部署asp.net core 项目 开机自启动
  • 贴片式内存卡 ​SD NAND​