在计算机科学中,树(英语:tree)是一种抽象数据类型(ADT)或是实现这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合。它是由n(n>0)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:
* 每个节点都只有有限个子节点或无子节点;
* 没有父节点的节点称为根节点;
* 每一个非根节点有且只有一个父节点;
* 除了根节点外,每个子节点可以分为多个不相交的子树;
* 树里面没有环路(cycle)
![](https://upload.wikimedia.org/wikipedia/commons/thumb/7/7e/Treedatastructure.png/300px-Treedatastructure.png)
术语:
* 节点的度:一个节点含有的子树的个数称为该节点的度;
* 树的度:一棵树中,最大的节点度称为树的度;
* 叶节点或终端节点:度为零的节点;
* 非终端节点或分支节点:度不为零的节点;
* 父亲节点或父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点;
* 孩子节点或子节点:一个节点含有的子树的根节点称为该节点的子节点;
* 兄弟节点:具有相同父节点的节点互称为兄弟节点;
* 节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类推;
* 深度:对于任意节点n,n的深度为从根到n的唯一路径长,根的深度为0;
* 高度:对于任意节点n,n的高度为从n到一片树叶的最长路径长,所有树叶的高度为0;
* 堂兄弟节点:父节点在同一层的节点互为堂兄弟;
* 节点的祖先:从根到该节点所经分支上的所有节点;
* 子孙:以某节点为根的子树中任一节点都称为该节点的子孙。
* 森林:由m(m>=0)棵互不相交的树的集合称为森林;
树的种类:
* 无序树:树中任意节点的子节点之间没有顺序关系,这种树称为无序树,也称为自由树;
* 有序树:树中任意节点的子节点之间有顺序关系,这种树称为有序树;
* 二叉树:每个节点最多含有两个子树的树称为二叉树;
* 完全二叉树:对于一颗二叉树,假设其深度为d(d>1)。除了第d层外,其它各层的节点数目均已达最大值,且第d层所有节点从左向右连续地紧密排列,这样的二叉树被称为完全二叉树;
* 满二叉树:所有叶节点都在最底层的完全二叉树;
* 平衡二叉树(AVL树):当且仅当任何节点的两棵子树的高度差不大于1的二叉树;
* 排序二叉树(二叉查找树(英语:Binary Search Tree)):也称二叉搜索树、有序二叉树;
* 霍夫曼树:带权路径最短的二叉树称为哈夫曼树或最优二叉树;
* B树:一种对读写操作进行优化的自平衡的二叉查找树,能够保持数据有序,拥有多于两个子树。
![](https://upload.wikimedia.org/wikipedia/commons/c/ca/Sqll.jpg)
- 概述说明
- 数据结构
- 数组
- 栈
- 队列
- 链表
- 树
- 堆
- 图
- 常用算法
- 排序算法
- 选择排序
- 冒泡排序
- 插入排序
- 快速排序
- 归并排序
- 希尔排序
- 堆排序
- 计数排序
- 基数排序
- 二分查找
- 贪心算法
- 回溯算法
- 剪枝算法
- 分支限界法
- 动态规划
- 设计模式
- 工厂模式
- 抽象工厂模式
- 单例模式
- 建造者模式
- 原型模式
- 适配器模式
- 桥接模式
- 过滤器模式
- 组合模式
- 装饰器模式
- 外观模式
- 享元模式
- 代理模式
- 责任链模式
- 命令模式
- 解释器模式
- 迭代器模式
- 中介者模式
- 备忘录模式
- 观察者模式
- 状态模式
- 空对象模式
- 策略模式
- 模板模式
- 访问者模式
- 并发
- 多线程
- 线程安全
- 一致性、事务
- 锁
- 操作系统
- 计算机原理
- CPU
- 进程
- 线程
- 协程
- Linux
- 运维
- 常规监控
- 统计分析
- 自动化运维
- 测试
- 文档管理
- 日志管理
- 中间件
- Web Server
- Nginx
- Apache
- Tomcat
- 缓存
- 消息队列
- 网络协议
- 协议
- OSI 七层协议
- TCP/IP
- HTTP
- HTTP2.0
- HTTPS
- 网络模型
- Epoll
- kqueue
- 数据库
- 基础理论
- MySQL
- NoSQL
- 搜索引擎
- Elasticsearch
- sphinx
- Lucene
- 性能
- 性能优化方法论
- 容量评估
- CDN 网络
- 连接池
- 性能调优
- 安全
- web 安全
- XSS
- CSRF
- SQL 注入
- 脚本注入
- 漏洞扫描工具
- 验证码
- DDoS 防范
- 用户隐私信息保护
- 加密解密
- 对称加密
- 哈希算法
- 非对称加密
- 服务器安全
- 数据安全
- 网络隔离
- 授权、认证
- RBAC
- OAuth2.0
- 单点登录(SSO)
- JWT
- 开源框架
- 开源协议
- 日志框架
- ORM
- PHP开源框架
- 分布式集群
- 扩展性设计
- 稳定性高可用
- 数据库扩展
- 分布式一致
- 分布式文件系统
- 开发模式
- DDD(Domain-driven Design - 领域驱动设计)
- Actor 模式
- 响应式编程
- DODAF2.0
- Serverless
- Service Mesh
- 项目管理
- 架构评审
- 重构
- 代码规范
- 代码 Review
- 看板管理
- 敏捷开发
- 极限编程
- PDCA 循环质量管理
- FMEA管理模式
- 资讯
- 行业资讯
- 公众号列表
- 博客
- 综合门户、社区
- 技术资源
- 开源资源
- 手册、文档、教程
- 在线课堂
- 代码托管
- 云服务商