* 二叉樹的遍歷算法可寫為通用形式例如通用的中序遍歷為
void Inorder(BinTreeTvoid(* visit)(DataType x)){
if (T){
Inorder(T>lchildVisit);//遍歷左子樹
Visit(T>data);//通過函數指針調用它所指的函數來訪問結點
Inorder(T>rchildVisit);//遍歷右子樹
}
}
其中Visit是一個函數指針它指向形如void f(DataType x)的函數因此我們可以將訪問結點的操作寫在函數f中通過調用語句Inorder(rootf)將f的地址傳遞給Visit來執行遍歷操作請寫一個打印結點數據的函數通過調用上述算法來完成書中節的中序遍歷
以二叉鏈表為存儲結構分別寫出求二叉樹結點總數及葉子總數的算法
以二叉鏈表為存儲結構分別寫出求二叉樹高度及寬度的算法所謂寬度是指二叉樹的各層上具有結點數最多的那一層上的結點總數
以二叉鏈表為存儲結構 寫一算法交換各結點的左右子樹
以二叉鏈表為存儲結構寫一個拷貝二叉樹的算法void CopyTree(BinTree root BinTree *newroot)其中新樹的結點是動態申請的為什麼newroot要說明為BinTree型指針的指針?
以二叉鏈表為存儲結構分別寫出在二叉樹中查找值為x的結點及求x所在結點在樹中層數的算法
一棵n個結點的完全二叉樹以向量作為存儲結構試寫一非遞歸算法實現對該樹的前序遍歷
以二叉鏈表為存儲結構一算法對二叉樹進行層次遍歷(層次遍歷的定義見)提示應使用隊列來保存各層的結點
以二叉鏈表為存儲結構寫一算法用括號形式(key LTRT)打印二叉樹其中key是根結點數據LT和RT是括號形式的左子樹和右子樹並且要求空樹不打印任何信息一個結點x的樹的打印形式是x而不是(x)的形式
以線索鏈表作為存儲結構分別寫出在前序線索樹中查找給定結點*p的前序後繼以及在後序線索樹中查找 *p的後序前趨的算法
完成節算法CreatHuffmanTree中調用的三個函數InitHuffmanTreeInputWeight 和SelectMin
分別寫出對文件進行哈夫曼編碼的算法以及對已編碼文件進行解碼的算法為簡單起見可以假設文件是存放在一個字符向量中
答
具體參見嚴蔚敏吳偉民的《數據結構》第二版
From:http://tw.wingwit.com/Article/program/sjjg/201311/23601.html