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 特點...