目錄python
二叉樹T:一個有窮的結點集合。spa
二叉樹具體五種基本形態code
二叉樹的子樹有左右順序之分對象
斜二叉樹以下圖所示:blog
完美二叉樹也稱做滿二叉樹(Full Binary Tree)it
完美二叉樹以下圖所示:io
有n個結點的二叉樹,對樹中結點按從上至下、從左到右順序進行編號,編號爲\(i(1\leq{i}\leq{n})\)結點與滿二叉樹中編號爲i結點在二叉樹位置相同。class
徹底二叉樹以下圖所示:二叉樹
以下圖所示的二叉樹即不爲徹底二叉樹:rsa
深度爲k的二叉樹有最大結點總數爲:\(2^k -1, \quad k\geq{1}\)
對任何非空二叉樹T,若\(n_0\)表示葉節點的個數、\(n_2\)是度爲2的非葉結點個數,那麼二者知足關係\(n_0=n_2+1\)
類型名稱:二叉樹
數據對象集:一個有窮的結點集合。若不爲空,則由根節點和其左、右二叉子樹組成。
操做集:\(BT\in{BinTree},\quad Item \in ElementType\),其重要操做有:
BooleanIsEmpty(BinTree BT)
:判斷BT是否爲空;void Traversal(BinTree BT)
:遍歷,按某順序訪問每一個結點;BinTree CreateBinTree()
:建立一個二叉樹。接下來介紹幾個經常使用的遍歷方法,將來會詳細講解。
void PreOrderTraversal(BinTree BT)
:先序 --》根、左子樹、右子樹;
void InOrderTraversal(BinTree BT)
:中序 --》左子樹、根、右子樹;
void PostOrderTraversal(BinTree BT)
:後序 --》左子樹、右子樹、根;
void LevelOrderTraversal(BinTree BT)
:層次遍歷,從上到下、從左到右
徹底二叉樹:按從上至下、從左到右順序存儲,n個結點的徹底二叉樹的結點父子關係
通常二叉樹也能夠採用這種結構,但會形成空間浪費……
/* c語言實現 */ typedef struct TreeNode *BinTree; typedef BinTree Position; struct TreeNode{ ElementType Data; BinTree Left; BinTree Right; }
# python語言實現 class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = None
單個子節點用下圖所示鏈表表示:
使用鏈表對整棵樹的表示以下: