線索:將二叉鍊錶中的空指標域指向前驅結點和後繼結點的指標被稱為線索;
線索化:使二叉鍊錶中結點的空鏈域存放其前驅或後繼資訊的過程稱為線索化;
線索二叉樹:加上線索的二叉樹稱為線索二叉樹
線索二叉樹的儲存結構:線索鍊錶
結點結構:
enum flag ;
template struct thrnode
;
線索二叉樹:
二叉樹的遍歷方式有4種,故有4種意義下的前驅和後繼,相應的有4種線索二叉樹:
⑴ 前序線索二叉樹
⑵ 中序線索二叉樹
⑶ 後序線索二叉樹
⑷ 層序線索二叉樹
中序線索鍊錶的宣告:
template class inthrbitree;
中序線索鍊錶的建立——建構函式
分析:建立線索鍊錶,實質上就是將二叉鍊錶中的空指標改為指向前驅或後繼的線索,而前驅或後繼的資訊只有在遍歷該二叉樹時才能得到
建立帶有標誌位的二叉鏈樹
template thrnode* inthrbitree::creat( )
return root;
}
中序線索化二叉樹:遞迴實現
基本思想:
在遍歷的過程中完成線索化
可以採用前序、中序、後序遍歷建立前序線索二叉樹、中序線索二叉樹和後序線索二叉樹。
中序線索二叉樹的構造方法
中序線索化根結點的左子樹;
對根結點進行線索化;
中序線索化根結點的右子樹;
演算法分析
函式設定形參root和全域性變數pre,分別表示要處理的樹的根結點和其前驅結點
如果root!=null
中序線索化root的左子樹
中序線索化root本身
如果root->lchildnull
root->left=pre,root->ltag=1;
如果root->rchildnull,root->rtag=1,
如果pre!=null, 並且pre->rtag=1,
pre->rchild=root,;
pre=root
中序線索化root的右子樹
中序線索化二叉樹:遞迴實現
**
template void thrbitree::thrbitree (thrnode*root)
if (!root->rchild) root->rtag = thread;
if(pre != null)
pre = root;
thrbitree(root->rchild);
}
**
線索二叉樹的建立
thrnode* pre = null
template inthrbitree::inthrbitree( )
第十五次作業
1 1 定義乙個汽車類vehicle,要求如下 知識點 類的繼承 方法的覆蓋 a 屬性包括 汽車品牌brand string型別 顏色color string型別 和速度speed double型別 b 至少提供乙個有參的構造方法 要求品牌和顏色可以初始化為任意值,但速度的初始值必須為0 c 為屬性...
第十五次ScrumMeeting部落格
本次會議於12月4日 一 22時整在3公寓725房間召開,持續30分鐘。與會人員 劉暢 辛德泰 張安瀾 趙奕 方科棟。隊員今日完成任務 明日任務計畫 劉暢張安瀾 學習訊息功能 辛德泰帖子介面銜接和解決資源介面檔名 資源介紹過長問題 帖子html顯示 方科棟jmeter指令碼和功能測試 jmeter指...
第十五周 任務二
程式頭部注釋開始 程式的版權和版本宣告部分 檔名稱 視窗練習 作 者 薛廣晨 完成日期 2012 年 05 月22 日 版 本 號 x1.0 對任務及求解方法的描述部分 輸入描述 視窗化 分數的加減乘除 問題描述 程式頭部的注釋結束 標頭檔案 cfrac.h class cfraction 建構函式...