树 (Tree)
定义
一种非线性的数据结构。在计算机科学中,树(英语:tree)是一种抽象数据类型(ADT)或是实现这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合。它是由()个有限节点组成一个具有层次关系的集合。
把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。
术语
根节点(又称头节点, root):最上面的节点,根节点是唯一没有父节点的节点。
孩子(children)节点和父节点(Parent):节点A的指针指向的节点们,被成为这个节点A的孩子节点(可能会有节点没有孩子节点)。反过来,A称为其孩子节点的父节点。
兄弟节点(sibling):若两个节点的父节点是同一个,则称这两个节点为兄弟节点
叶子节点(leaf):没有==孩子节点==的节点被称为叶子节点,其他节点成为内部节点(internal node)
祖先节点(ancestor)和子孙节点(descendent):如果从A节点能链接到B节点,则A为B的祖先节点,B为A的子孙节点。
子树(sub-tree):涉及到了树的递归,可以这样说,一棵树是由根节点和他的子树构成
以上图1节点为例,有左右两个子树(深红色和黄色)。
性质
有N个节点的树,一定有N-1条边。
宽度 Width:某一层的宽度表示该层中含有的节点的个数。树的宽度为所有层中最大的宽度。
深度 Depth:节点X的深度定义为从根节点走到节点X经过边的个数。
高度 Height:节点X的高度定义为从节点X到所有叶子节点中经过的最长路径(边的个数)。树的高度为根节点的高度。

Note
只有一个节点的树,其高度为 空树指的是没有节点的树,称它的高度为
注意区分深度和高度两个定义
应用场景
常用来存储和组织具有层级结构的数据,是一种非线性的数据结构。
常见分类
二叉树(Binary Tree):一个树中的节点最多含有两个孩子节点的树,称为二叉树。
应用
- 存储的天然的层级数据,如文件系统
- 组织数据,让其能够快速的查找、插入、删除,比如二叉搜索树(Binary Search Tree)
- 被用来当作字典的Trie树,可以快速的进行拼写检查。