讲完了链表下面了解树的数据结构,它非常的重要。
树型结构
常见的树形结构有二叉树和多叉树(大于两个叉的树)。
开发中常见的树形结构有:文件夹目录、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),特性是当它的左子树不空,则左子树上所有节点的值均小于它的根节点的值,当右子树不空,则右子树所有节点的值均大于它的根节点的值。