树( Tree):n(n≥O) 个结点的有限集。(只有一个根节点,子集互不相交)
节点的度(Degree):节点拥有的子节点数(树的degree = max(各子节点的degree))
叶(leaf):degree = 0
树的深度(Depth):节点的最大层次
树的表示:
双亲表示法:各节点存在一个指针指向其双亲。
孩子表示法:节点存在degree个指针指向其子树根元素。
孩子兄弟表示法:节点存在一个指向其同层下一个兄弟节点的指针和它的左侧第一个子节点的指针。(表示为二叉树Binary Tree)
二叉树(Binary Tree):每个节点max(degree ) = 2 ;左子树和右子树有序。
斜树:只有左子树或只有右子树(线性表是一种特例)
满二叉树:所有内部节点degree=2,所有leaf在同一层(只能是最下层)
满二叉树的特点:
( 1 ) 叶子只能出现在最下一层。
( 2 ) 非叶子结点的度一定是2 。
( 3 ) 在同样深度的二叉树中,满二叉树的结点个数最多,叶子数最多。
完全二叉树:对一棵具有n 个结点的二叉树按层序编号,编号为i (1<i<n) 的结点与同样深度的满二叉树中编号为i 的结点在二叉树中位置完全相同
完全二叉树的特点:
( 1 ) 叶子结点只能出现在最下两层。
( 2 ) 最下层的叶子一定集中在左部连续位置。
( 3 ) 倒数二层,若有叶子结点,一定都在右部连续位置。
( 4 ) 如果结点度为1 ,则该结点只有左孩子,即不存在只有右子树的情况。
( 5 ) 同样结点数的二叉树,完全二叉树的深度最小。
二叉树的性质:
1.深度为k的二叉树第k层最多有(2k-1)个节点。(等比数列第n项)
2.深度为k的二叉树最多有(2k-1)个节点。(等比数列前n项和)
3.二叉树的leaf节点数n0和degree=2的节点数n2有关系:n0=n2+1(总节点数:n=n0+n1+n2;总度数(总分支数):0*n0+1*n1+2*n2=n-1)
4.节点数为n的完全二叉树的深度:k=log2n+1(根据满二叉树计算公式推得:2k-1-1<n<=2k-1 》》 2k-1<=n<2k 》》 k-1<=log2n<k 》》 k=log2n+1)
huffman树: