形式化定義:
對於樹:t=,d是包含n個結點的有限集合,當n=0時為空樹,否則關係r滿足以下條件:
遞迴定義:
樹是由n個結點組成的有限集合,其中:
插入或刪除
遍歷二叉樹是有限的節點的集合:
同樹完全二叉樹
完全二叉樹的性質
森林、樹轉化為二叉樹
在所有相鄰兄弟節點(森林中每棵樹的根節點可看成是兄弟節點)之間加一水平連線
對每個非葉節點k,除了其最左邊的孩子節點外,刪去k與其他孩子節點的連線
二叉樹還原為森林、樹
對於二叉樹的某乙個節點k,鏈結k與k的左孩子的所有右孩子節點,刪去k的左孩子與右孩子節點之間的連線
若根節點有右孩子節點,將其分成兩個不同的子樹。
為了簡便,我們不用下標為0的元素
若為完全二叉樹,則將節點按層序編號
若為非完全二叉樹,將其補全後(可以利用特殊符號填補空缺)再按層序標號
節點的型別定義:
在n個節點的二叉鏈中,空指標的個數=n+1typedef elemtype int
;typedef
struct node
btnode;
層次遍歷
不能唯一的確定二叉樹
可以唯一確定二叉樹的原因為:
可以根據先序/後序確定根節點,從而在中序中找出根節點以及左子樹和右子樹,往下遞迴即構造出二叉樹
很是懵逼
哈夫曼樹的構造過程(若有n個節點):
構造n棵只有乙個葉節點的二叉樹,得到二叉樹集合t
在t中選取根節點權值最小的兩棵二叉樹作為左、右子樹構造一棵新的二叉樹,根節點的權值為其左、右子樹根節點的權值之和
在集合t中刪除左、右子樹,並將新構造的二叉樹加入到集合中
重複2,3直到t中只剩下一棵二叉樹,此即哈夫曼樹
二叉樹中節點的計算方法
二叉樹的構造:
由乙個固定的先序序列(含有n個不同的節點),構造的二叉樹個數為:c2n
nn+1
\frac^}
n+1c2n
n例題:
資料結構複習
1 二叉遍歷 先序遍歷 先遍歷根結點,遍歷左子樹,遍歷右子樹 中序遍歷 先遍歷左子樹,遍歷根結點,遍歷右子樹 後序遍歷 先遍歷左子樹,遍歷右子樹,遍歷根結點 例項 遍歷a b c d e f 如 a e f b c d 先序遍歷 a b cd ef 中序遍歷 a b c d e f 後序遍歷 abc...
資料結構複習
個人理解 1 我認為關鍵是如何合理地將資料放到樹形結構裡 放的方式就是中序排序,即遍歷一遍順序與之相同 2 二叉搜尋樹類似於二分,可以與折半搜尋相比較,雖然思想相似,但是他們的時間效能有時不相同 例如 如果防止不當,42放到了左半枝,這樣就會導致如果輸入31開始比對就會產生位置確認不準確的問題 把一...
複習 資料結構
因為要準備複試,想把專業課順一下,在此簡單記錄。主要按照本科課件複習。資料結構的概念 邏輯結構 邏輯結構可以分為線性結構和非線性結構 儲存結構 儲存結構包括順序 鏈結 索引和雜湊四種方法。鏈結儲存 通過在結點的儲存結構中附加指標欄位來儲存結點間的邏輯關係。資料結點由資料字段 存放結點本身資料 和指標...