非线形结构,每个元素可以有多个前驱和后继
树中的数据元素
结点拥有的子树的数目,记作d
结点的度为0, 称为叶子结点leaf, 终端结点,末端结点
结点的度部位0,称为非终端结点或分支结点
结点之间的关系
除根结点外的分支结点,当然也不包括叶子结点
树的度是树内个结点的度的最大值
结点的子树的根结点成为该结点的孩子
一个接的是他各子树的根结点的双亲
具有相同双亲结点的结点
从根结点到该结点锁经分支上所有的结点
结点的所有子树上的结点
根结点为第一层
根结点的孩子为第二层
以此类推
树的层次的最大值
结点的子树是有顺序的,不能交换
结点的子树是无序的,可以交换
树中的k个结点n1,n2 …… nk 满足nx是n(x+1) 的双亲,成为n1到nk的一条路径,一条线串下来,前一个都是后一个父结点
m(m>=0) 棵不相交的树的集合
对于结点而言,子树的集合就是森林
唯一的根
子树不相交
除了根以外,每个元素只能有一个前驱,可以有零个或者多个后继
根结点没有双亲结点,叶子结点没有孩子结点
每个结点最多2棵子树
二叉树不存在度数大于2的结点
在二叉树的第i层上至多有2^(i-1)个结点(i>=1)
深度为k的二叉树,至多有(2^k)-1个结点(k>=1)
任何的二叉树,如果其终端结点数为n0,度数为2的结点为n2,则n0=n2+1
高度为k的二叉树,至少有k个结点
所有结点只有左子树
所有结点只有右子树
深度为3的7结点满二叉树
a / \ b c /\ /\ d e f g
一颗二叉树的所有分支结点都存在左子树和右子树,并且所有叶子结点只存在在最下面一层
同样深度二叉树中,满二叉树结点最多
若二叉树的深度为k,二叉树的层数从1到k-1层的结点数都达到了最大个树,并且在第k层的所有结点都集中在最左边
a / \ b c /\ /\ d e f g / h
a / \ b c /\ /\ d e f g /\ h i
a / \ b c /\ /\ d e f g /\ /\ / h i j k l
完全二叉树由满二叉树引出
满二叉树一定是完全二叉树,但完全二叉树不一定是满二叉树
具有n个结点的完全二叉树的深度为math.ceil(log2(n+1))
对树中所有的元素不重复地访问一遍,也称扫描
按照层次,从第一层开始,自左向右遍历元素
从根结点开始,自左子树,后右子树
从根结点的左子树开始遍历,然后是根结点,再右子树
先左子树,然后右子树,再根结点