假如有三个节点,一个是父节点,两个是不同级的子节点,那么就有六种情况:
三个节点组成的无序树,合起来就是九种情况。
二叉树:每个节点最多含有两个子树。二叉树按照不同的表现形式又可以分为多种。
完全二叉树:对于一颗二叉树,假设其深度为 d(d > 1)。除了第 d 层,其它各层的节点数目均已达最大值,且第 d 层所有节点从左向右连续地紧密排列,这样的二叉树被称为完全二叉树。
拿上图来说,d 为 3,除了第 3 层,第 1 层、第 2 层 都达到了最大值(2 个子节点),并且第 3 层的所有节点从左向右联系地紧密排列(H、I、J、K、L),符合完全二叉树的要求。
满二叉树:一颗每一层的节点数都达到了最大值的二叉树。有两种表现形式,第一种,像下图这样(每一层都是满的),满足每一层的节点数都达到了最大值 2。
第二种,像下图这样(每一层虽然不满),但每一层的节点数仍然达到了最大值 2。
二叉查找树:英文名叫 Binary Search Tree,即 BST,需要满足以下条件:
任意节点的左子树不空,左子树上所有节点的值均小于它的根节点的值;
任意节点的右子树不空,右子树上所有节点的值均大于它的根节点的值;
任意节点的左、右子树也分别为二叉查找树。
基于二叉查找树的特点,它相比较于其他数据结构的优势就在于查找、插入的时间复杂度较低,为 O(logn)。假如我们要从上图中查找 5 个元素,先从根节点 7 开始找,5 必定在 7 的左侧,找到 4,那 5 必定在 4 的右侧,找到 6,那 5 必定在 6 的左侧,找到了。