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

数据结构与算法 第5天(树和二叉树)

树形结构

一对多        只有一个前驱       可以有多个后继

树的定义

基本术语

有序树:树中结点的各子树从左至右有次序(最左边的为第一个孩子)

森林:是 m(m≥0)棵互不相交的树的集合。        一棵树可以看成特殊的森林

二叉树

每个节点最多有两个分支        所有树可以转化成唯一二叉树

二叉树定义

二叉树不是树的特殊情况        差别是子树是否区分

抽象数据类型定义

二叉树性质

从下往上数,每个孩子都有一条边连着双亲,除了根节点。

如果有n个节点 就会有B=n-1条边

从上往下看,每个度为2的节点会产生两条边,度为1的节点会产生一条边

如果有n个节点,就有 B=n2*2+n1条边

总结点数等于,度为2的节点,加度为1的节点,加度为0的节点

综上叶子树n0=n2+1

简单说就是,一个节点为i,则双亲结点为i/2取整,左子树节点为2i,右子树节点为2i+1

特殊形式的二叉树

满二叉树

注:在满二叉树中,从最后一个结点开始,连续去掉任意个结点,即是一棵完全二叉树.

完全二叉树

满二叉树一定是完全二叉树

二叉树顺序存储

按满二叉树的结点层次编号,依次存放二又树中的数据元素。

二叉树链式存储结构

*三叉链表

应用

数据压缩

求解表达式的值


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

相关文章:

  • 开源项目推荐——OpenDroneMap无人机影像数据处理
  • 论文翻译 | The Capacity for Moral Self-Correction in Large Language Models
  • 如何在python中模拟重载初始化函数?
  • MybatisPlus入门(十)MybatisPlus-逻辑删除和多记录操作
  • NAT网络工作原理和NAT类型
  • Fastapi使用MongoDB作为数据库
  • 使用 OpenCV 组合和缩放多张图像
  • 【C++】避开 C 语言的格式化输出陷阱:掌握 printf、sprintf、snprintf、fprintf、vsprintf
  • 使用 pnpm workspace 和 standalone 模式构建 Next.js 的 Docker 镜像
  • ceph rgw reshard (by quqi99)
  • Ubuntu 24.04 中安装网易邮箱大师
  • JVM下篇:性能监控与调优篇-02-JVM监控及诊断工具-命令行篇
  • mybatisplus + oracle + spring boot遇到的一些问题
  • python基础学习(最终篇)
  • Unclutter - 苹果电脑(Mac)桌面文件笔记剪贴板管理工具
  • jenkins如何生成报告并查看报告,如何安装allure插件
  • MySQL-基础篇-事务(事务简介、事务操作、事务的四大特性、并发事务引发的问题、事务的隔离级别)
  • 前波士顿咨询Platinion董事总经理陈果加入望繁信科技
  • RK3568平台(平台总线篇)SPI驱动框架分析
  • 今日算法:蓝桥杯基础题之“星系炸弹”
  • Python | Leetcode Python题解之第384题打乱数组
  • Claude 与 ChatGPT:哪个更适合学术写作,深入对比分析
  • linux批量解压tar.gz文件
  • I/0系统基本概念
  • ORACLE 统计信息的备份与恢复
  • Servlet 简介+ Cookie和session+过滤器Filter和监听器Listener