線索二叉樹的思想**於二叉樹的儲存結構中,存在一些空的指標域,因此是否能夠將這些空間利用起來,儲存一些關於節點間先後順序的資訊,由此產生了線索二叉樹。線索二叉樹中,線索反映前驅、後繼的關係,而指標則體現左右子樹。
以二叉鍊錶為例,線索二叉樹儲存結構上的特點是新增識別符號,表明左右指標域究竟存的是指向前驅和後繼的線索,還是指向左右子樹的指標;
線索二叉樹的優勢是一旦對一棵二叉樹建立了相應的線索結構,當以後使用特定的方式遍歷這課樹時,可以避免遞迴方式和非遞迴方式(利用棧)帶來的空間開銷。
構建和遍歷線索二叉樹的思路如下:
首先構造一棵二叉樹(構造二叉樹可以使用任意順序:先序、中序、後續均可);
按照一定的順序線索化這棵二叉樹
然後按照相同的順序遍歷該二叉樹,就可以利用上一步構建的線索資訊。
①當ltag為0時,指向該結點的左孩子,為1時指向該結點的前驅
②rlag為0時,指向該結點的右孩子,為1時指向該結點的後驅
**哈夫曼樹:
在有n個節點的哈夫曼樹中,其節點總數為2n-1**
構造哈夫曼樹:
①根據給定的n 個權值,w1,w2.。。。構成n棵二叉樹的森林f=,其中每顆二叉樹ti中都只有乙個權值為wi 的根節點,其左右子樹均空;
②在森林f中選出兩棵根節點權值最小的樹作為一棵新樹的左右子樹,且置新的根節點的權值為其左右子樹上根節點的權值之和
③從f 中刪除構成新樹的兩棵樹,同時把新樹加入到f 中
④重複第②③步,直到f中只含有一棵樹為止,此樹便是哈夫曼樹
樹和二叉樹 哈夫曼樹和線索二叉樹
最優二叉樹 葉子結點的權值 對葉子結點賦予的乙個有意義的數值量。二叉樹的帶權路徑長度 設二叉樹具有n個帶權值的葉子結點,從根結點到各個葉子結點的路徑長度與相應葉子結點權值的乘積之和。哈夫曼樹 給定一組具有確定權值的葉子結點,帶權路徑長度最小的二叉樹。哈夫曼樹的特點 1 權值越大的葉子結點越靠近根結點...
哈夫曼樹(最優二叉樹)
給定n個權值作為n的 葉子結點,構造一棵二叉樹,若帶權路徑長度達到最小 所謂樹的帶權路徑長度,就是樹中所有的葉結點 的權值乘上其到根結點的路徑長度 稱這樣的二叉樹為最優二叉樹,也稱為哈夫曼樹 huffman tree 哈夫曼樹是帶權路徑長度最短的樹,權值較大的結點離根較近。假設有n個權值,則構造出的...
二叉樹與哈夫曼樹
1,二叉樹 二叉樹可以分為 完全二叉樹,滿二叉樹,哈夫曼樹 二叉樹的遍歷 遞迴 先序,中序,後序遍歷 二叉樹的結構 根節點,左子樹,右子樹 二叉樹的性質 1 如果二叉樹的節點個數為n,則父節點的個數為n 2 2 若2i 1 3 若2i 2 二叉樹的構建 構建二叉樹 public void creat...