DS樹 帶權路徑和

2021-10-01 13:41:21 字數 1188 閱讀 2089

題目描述

計算一棵二叉樹的帶權路徑總和,即求赫夫曼樹的帶權路徑和。

已知一棵二叉樹的葉子權值,該二叉樹的帶權案路徑和apl等於葉子權值乘於根節點到葉子的分支數,然後求總和。如下圖中,葉子都用大寫字母表示,權值對應為:a-7,b-6,c-2,d-3

樹的帶權路徑和 = 71 + 62 + 23 + 33 = 34

本題二叉樹的建立參考前面的方法

輸入第一行輸入乙個整數t,表示有t個二叉樹

第二行輸入一棵二叉樹的先序遍歷結果,空樹用字元『0』表示,注意輸入全是英文本母和0,其中大寫字母表示葉子

第三行先輸入n表示有n個葉子,接著輸入n個資料表示n個葉子的權值,權值的順序和前面輸入的大寫字母順序對應

以此類推輸入下一棵二叉樹

輸出輸出每一棵二叉樹的帶權路徑和

樣例輸入

2

xa00tb00zc00d00

4 7 6 2 3

ab0c00d00

2 10 20

樣例輸出
34

40

#include #include using namespace std;

class binode

binode(char e):data(e),lchild(null),rchild(null){}

~binode()

friend class bitree;

};class bitree

void createtree();

void preorder();

void getweight();

};void bitree::createtree(binode *&t,int layer)

}void bitree::createtree()

void bitree::preorder(binode *t)

preorder(t->lchild);

preorder(t->rchild);

}}void bitree::preorder()

}int main()

return 0;

}

DS樹 帶權路徑和

題目描述計算一棵二叉樹的帶權路徑總和,即求赫夫曼樹的帶權路徑和。已知一棵二叉樹的葉子權值,該二叉樹的帶權案路徑和apl等於葉子權值乘於根節點到葉子的分支數,然後求總和。如下圖中,葉子都用大寫字母表示,權值對應為 a 7,b 6,c 2,d 3 樹的帶權路徑和 71 62 23 33 34 本題二叉樹...

Huffman樹的帶權路徑長度

題目描述 給定n個權值 權值均是大於0的正整數 構造赫夫曼樹ht,並求出赫夫曼樹ht的帶權路徑長度。注意 構造赫夫曼樹ht時,在將2棵二叉樹合併成一棵新的二叉樹時,將根結點權值小的用作左子樹!輸入先輸入權值的個數n n 1 然後依次輸入n個權值 權值均是大於0的正整數 輸出輸出構造的赫夫曼樹ht的帶...

哈夫曼樹 哈夫曼樹求帶權路徑和

首先要了解哈夫曼樹的一些概念 帶權路徑 每個葉子結點都有權值,對於某葉子結點來說,它的帶權路徑就是 結點權值 從根節點到該結點的路徑長度 哈夫曼樹的構造方法 兩個權值最小的葉子結點作為兄弟去構成乙個非葉節點。該父親非葉節點的權值 二者之和 之前我只知道這些基本概念,求帶權路徑和的時候也只是 數數 數...