二叉树简单说就是有两个子树的树
1.种类及概念:
二叉树是每个结点最多有两个子树的树结构。
完全二叉树:除最后一层外,若其余层都是满的,并且最后一层或者是满的,或者是在右边缺少连续若干节点。
满二叉树:每一层上的节点数都是最大节点数,深度为k,且有2^k-1个节点。
平衡二叉树:又被称为AVL树(区别于AVL算法),它是一棵二叉排序树,且具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
森林:不考虑连通性,允许图中有多个连通分量的结构。
(1)空二叉树:图(a)
(2)只有一个根结点的二叉树:图(b)
(3)只有左子树:图(c)
(4)只有右子树:图(d)
(5)完全二叉树:图(e)
2.定义及性质:
二叉树常被用于实现二叉查找树和二叉堆。
二叉树是一个连通的无环图,并且每一个顶点的度不大于3。有根二叉树还要满足根结点的度不大于2。有了根结点之后,每个顶点定义了唯一的父结点,和最多2个子结点。
二叉树不是树的一种特殊情形,树和二叉树有两个主要差别:
1. 树中结点的最大度数没有限制,而二叉树结点的最大度数为2;
2. 树的结点无左、右之分,而二叉树的结点有左、右之分。
3.其他术语:
子树:通常被称作“左子树”(left subtree)和“右子树”(right subtree);
根结点(root):也叫树根,所有非空的二叉树中,都有且仅有一个根结点。它是同一棵树中除本身外所有结点的祖先,没有父结点。
树的结点(node):包含一个数据元素及若干指向子树的分支;
孩子结点(child node):结点的子树的根称为该结点的孩子;
双亲结点:B 结点是A 结点的孩子,则A结点是B 结点的双亲;
兄弟结点:同一双亲的孩子结点;
堂兄结点:位于同一层的,并且父节点之间是兄弟结点的结点
祖先结点: 从根到该结点的所经分支上的所有结点;
子孙结点:以某结点为根的子树中任一结点都称为该结点的子孙;
结点层:根结点的层定义为1;根的孩子为第二层结点,依此类推;也叫结点的层次或结点的深度;
树的深度(depth):树中最大的结点层,也叫结点的最大层次;
结点的高度(height of node):高度与深度不同,高度的描述是自下向顶的;
路径(path)和路径长度:从结点n1到nk的路径为一个结点序列n1,n2,...,nk,ni是ni+1的父结点。路径所包含边的个数为路径的长度;
结点的度(Degree):拥有子结点(子树)的数量;
树的度: 选取所有结点中最大的度;
叶子结点:也叫终端结点,是度为 0 的结点。位于树最深层,并且树只要非空,就一定存在叶子结点
分枝结点:度不为0的结点。除了叶子结点之外的结点都为分支结点,而且根结点也是分支结点
有序树:子树有序的树,如:家族树;
无序树:不考虑子树的顺序。
【注:参考:https://blog.csdn.net/weixin_41133154/article/details/80027285
https://baike.baidu.com/item/%E4%BA%8C%E5%8F%89%E6%A0%91/1602879?fr=aladdin】