50 # 树的概念

简介: 50 # 树的概念

讲完了链表下面了解树的数据结构,它非常的重要。

树型结构

常见的树形结构有二叉树和多叉树(大于两个叉的树)。

开发中常见的树形结构有:文件夹目录、DOM 结构、路由的配置…

常见的概念

  • 节点:根节点、父节点、子节点、兄弟节点
  • 子树:左子树、右子树,子树的个数称之为
  • 叶子节点:度为 0 的节点,非叶子节点:度不为 0 的节点
  • 节点的深度:从根节点到当前节点所经过的节点总数
  • 节点的高度:从当前节点到最远叶子节点经过的节点总数
  • 树的层数、树的高度、树的深度
  • 有序树:节点按照顺序排列,无序树

二叉树

二叉树是每个节点最多有两个子树的树结构,每个节点的度最多为 2,通常子树被称作左子树left subtree)和右子树right subtree),左子树和右子树是有顺序的

二叉树的常见概念

  • 真二叉树:不含一度节点的二叉树称作真二叉树(proper binary tree
  • 满二叉树:满二叉树也是真二叉树,且所有的叶子节点都在最后一层
  • 完全二叉树:深度为 k 的有 n 个节点的二叉树,对树中的节点按从上至下,从左至右的顺序进行编号,如果编号为 i ( 1 ≤ i ≤ n)的节点与满二叉树中编号为 i 的节点在二叉树中的位置相同,则这棵二叉树称为完全二叉树。

什么是二叉搜索树?

一般情况下存储数据我们可以采用数组的方式,但是从数组中检索数据的时间复杂度是 O(n),如果数据存储有序,则可以采用二分查找的方式来检索数据,复杂度为 O(logn),但是如果操作数组中的数据像增加、删除默认数组会产生塌陷,时间复杂度为 O(n)

二叉搜索树也称为二叉查找树或二叉排序树,在二叉搜索树中查询、增加、删除复杂度最坏为 O(logn),特性是当它的左子树不空,则左子树上所有节点的值均小于它的根节点的值,当右子树不空,则右子树所有节点的值均大于它的根节点的值。

目录
相关文章
|
机器学习/深度学习 自然语言处理 数据处理
零样本学习的易懂解释
零样本学习是一种机器学习的方法,它的目标是在没有任何标记样本的情况下,通过学习从未见过的类别或任务。这意味着模型需要在没有任何先验知识的情况下进行学习和推理。
618 0
|
11月前
|
存储 SQL 监控
转转平台IM系统架构设计与实践(二):详细设计与实现
以转转IM架构为起点,介绍IM相关组件以及组件间的关系;以IM登陆和发消息的数据流转为跑道,介绍IM静态数据结构、登陆和发消息时的动态数据变化;以IM常见问题为风景,介绍保证IM实时性、可靠性、一致性的一般方案;以高可用、高并发为终点,介绍保证IM系统稳定及性能的小技巧。
236 6
|
关系型数据库 MySQL Linux
Linux下mysql数据库的导入与导出以及查看端口
本文详细介绍了在Linux下如何导入和导出MySQL数据库,以及查看MySQL运行端口的方法。通过这些操作,用户可以轻松进行数据库的备份与恢复,以及确认MySQL服务的运行状态和端口。掌握这些技能,对于日常数据库管理和维护非常重要。
582 8
|
监控 Java 开发者
监控堆外JVisualVM工具
监控堆外JVisualVM工具
291 2
|
机器学习/深度学习 人工智能 自然语言处理
自然语言处理(NLP)是AI的重要分支,旨在让计算机理解人类语言
自然语言处理(NLP)是AI的重要分支,旨在让计算机理解人类语言。本文探讨了深度学习在NLP中的应用,包括其基本任务、优势、常见模型及具体案例,如文本分类、情感分析等,并讨论了Python的相关工具和库,以及面临的挑战和未来趋势。
872 1
|
运维 Cloud Native Devops
云原生技术:构建弹性、高效和可扩展的现代应用
在当今数字化时代,企业面临着日益复杂的市场需求和技术挑战。为了满足这些需求,许多企业转向了云原生技术。云原生是一种以云计算为基础的架构和方法论,旨在构建弹性、高效和可扩展的现代应用程序。本文将深入探讨云原生技术的核心概念、优势以及实施过程中的关键步骤,帮助读者更好地理解和应用这一前沿技术。
292 25
|
安全 Ubuntu 搜索推荐
|
搜索推荐 算法 Java
基于SpringBoot+Vue电影推荐系统设计和实现(源码+LW+调试文档+讲解等)
基于SpringBoot+Vue电影推荐系统设计和实现(源码+LW+调试文档+讲解等)
|
安全 网络协议 Java
log4j-CVE-2021-44228-vulhub复现
log4j-CVE-2021-44228-vulhub复现
719 0
|
XML 前端开发 测试技术
安卓架构模式:MVC、MVP、MVVM及更多
【4月更文挑战第13天】本文探讨了安卓应用开发中的常见架构模式,包括MVC、MVP和MVVM,以及VIPER和Clean Architecture。MVC分离关注点,易于理解,但安卓不直接支持。MVP通过呈现器实现更清晰的分层和便于单元测试。MVVM利用数据绑定简化UI逻辑,适合声明式编程。开发者应根据项目需求、团队技能和维护周期选择合适架构,随着工具和框架的进步,未来将提供更多模块化、可测试性和敏捷性的解决方案。
653 7