先说一些基本概念吧
树定义:
有且只有一个称为根的节点,有若干个互不相交的子树(本身也是一棵树)。通俗地说树是由节点和边组成的,每个节点只有一个父节点但可以有多个子节点(根节点例外)
专业术语:
节点 父节点 子节点 子孙 堂兄弟 深度:从根节点到最底层节点的层数称之为深度(根节点为第一层)
树的深度:节点最大层次
叶子节点:没有子节点的节点
非终端节点:就是非叶子节点(有子节点)
度:该点子节点的个数
树的度:节点度最大值就是该树的度
树分类:
一般树
任意一个子节点的个数都不受限制
二叉树
任意一个节点的子节点个数最多为两个,且子节点有序(左子树,右子树)
二叉树-----
一般二叉树
满二叉树
每一层的节点数都是最大节点数
完全二叉树
每一个节点编号与满二叉树一一对应但不一定存满,(满二叉树是特殊的完全二叉树)
森林
是n个互不相交的树的集合
性质一:在二叉树的i层上至多有2 i-1个节点(i>=1)至少有1个
性质二:深度为k的二叉树至多有2k-1个节点,至少为k个
性质三:对任何一棵二叉树T,如果终端结点树为n,度为2的结点为n2,度为0的结点为n0 则n0=n2+n1
性质四:具有n个节点的完全二叉树的深度为[log2n]+1向下取整
性质五:如果有一颗有n个节点的完全二叉树的节点按层次序编号,对任一层的节点i(1<=i<=n)有
1.如果i=1,则节点是二叉树的根,无双亲,如果i>1,则其双亲节点为[i/2],向下取整
2.如果2i>n那么节点i没有左孩子,否则其左孩子为2i
3.如果2i+1>n那么节点没有右孩子,否则右孩子为2i+1
大家可以通过画图验证以上性质