資料結構 樹與二叉樹

2021-10-08 05:30:00 字數 1717 閱讀 1432

13 樹 森林與二叉樹

14 哈夫曼樹

15 並查集

16 層次遍歷二叉樹

typedef

struct nodebitnode,

*bitree;

乙個二叉樹有n個結點,則有2n個鏈域,其中有n+1個空鏈域(非空鏈域:n-1 出邊數)

void

preorder

(bitree root)

}

void

inorder

(bitree root)

}

void

postorder

(bitree root)

}

這三者可以相互轉換,比如從中綴表示式到字首和字尾即是按運算順序加括號,然後將所有的運算子移動到前面或後面,最後去掉括號的過程。

void

printpreorder

(bitree root)

preorder

(root-

>lchild)

;preorder

(root-

>rchild);}

}

void

leafnum

(bitree root)

}

分治法:

void

leafnum

(bitree root)

return leafcnt;

}

後序遍歷:

從根結點的左右子樹開始遞迴計算,分別算出hl和hr後取較大的加一

int

posttreedepth

(bitree bt)

}

先序遍歷,往下走層次加一,更新深度

void

pretreedepth

(bitree bt,

int h)

}

void

inorder

(bitree root)

else

}}

線索化的過程是在遍歷過程中修改空指標的過程

參見我的總結:通過遍歷結果推二叉樹的構造

圖中三個步驟即可!

先通過上述方法將樹轉二叉樹,然後下一棵樹的根結點作為上一顆樹的右孩子組合在一起即可!

帶權路徑最短二叉樹!

選取最小的兩個結點組合,在將這兩個結點的和加入原序列中,繼續選取最小的兩個結點,遞迴組合成為一棵哈夫曼樹(直**,權重大的結點靠近根結點)

本文更新至2020.8.1

資料結構 樹與二叉樹

一 性質 1 在二叉樹中,第i層的結點總數不超過2 i 1 2 深度為h的二叉樹最多有2 h 1個結點 h 1 最少有h個結點 3 對於任意一棵二叉樹,如果其葉結點數為n0,而度數為2的結點總數為n2,則n0 n2 1 4 具有n個結點的完全二叉樹的深度為int log2n 1 5 給定n個節點,能...

資料結構 樹與二叉樹

1 樹的定義 樹是一種 非線性的資料結構。樹是n n 0 個結點的有限集,在任意一棵非空樹中 1 有且僅有乙個特定的被稱為 根 root 的結點 2 當n 1時,其餘結點可分為m m 0 個互不相交的有限集,其中每個集合本身又是一棵樹,並且稱為根的 子樹 subtree 3 每棵子樹也是由唯一的根結...

資料結構 樹與二叉樹

樹是一類重要的非線性資料結構,是以分支關係定義的層次結構 定義 樹 tree 是n n 0 個結點的有限集t,其中 有且僅有乙個特定的結點,稱為樹的根 root 當n 1時,其餘結點可分為m m 0 個互不相交的有限集t1,t2,tm,其中每乙個集合本身又是一棵樹,稱為根的子樹 subtree 特點...