二叉樹(shù)中序線索化詳細(xì)圖解 線索二叉樹(shù)的插入有幾種情況?
線索二叉樹(shù)的插入有幾種情況?在線程二叉樹(shù)中插入新節(jié)點(diǎn)時(shí),必須在插入位置修改原有的前導(dǎo)和后繼線索,這樣既能保留原有的線程關(guān)系,又能在插入新節(jié)點(diǎn)后正確維護(hù)原有的線程關(guān)系。以中階線程二叉樹(shù)為例,如果將新節(jié)點(diǎn)
線索二叉樹(shù)的插入有幾種情況?
在線程二叉樹(shù)中插入新節(jié)點(diǎn)時(shí),必須在插入位置修改原有的前導(dǎo)和后繼線索,這樣既能保留原有的線程關(guān)系,又能在插入新節(jié)點(diǎn)后正確維護(hù)原有的線程關(guān)系。以中階線程二叉樹(shù)為例,如果將新節(jié)點(diǎn)R作為節(jié)點(diǎn)s的右子節(jié)點(diǎn)插入,則應(yīng)根據(jù)s的右子字段是線索還是右子指針來(lái)確定不同的處理方法。同樣,如果將新節(jié)點(diǎn)R作為節(jié)點(diǎn)s的左子節(jié)點(diǎn)插入,還應(yīng)考慮s的leftchild字段是線索還是左子指針,以確定不同的處理方法。
中序線索化二叉樹(shù)程序?
我了解的方法:首先,要標(biāo)記的二叉樹(shù):都設(shè)置兩個(gè)標(biāo)記LTAG,rtag,如果左子指針為空,LTAG=1,如果右子指針為空,rtag=1。按順序遍歷線程二叉樹(shù):首先按順序遍歷線程二叉樹(shù),然后將得到的節(jié)點(diǎn)按順序加入隊(duì)列。然后,根據(jù)標(biāo)簽,隊(duì)列中的第一個(gè)節(jié)點(diǎn)是LTAG=0。如果LTAG=1,則左指針指向團(tuán)隊(duì)中的前一個(gè)元素。如果rtag=1,則右指針指向團(tuán)隊(duì)中的下一個(gè)元素。中階遍歷線程二叉樹(shù):首先進(jìn)行中階遍歷,然后依次對(duì)得到的節(jié)點(diǎn)進(jìn)行排隊(duì),然后依次對(duì)隊(duì)列中除根節(jié)點(diǎn)以外的節(jié)點(diǎn)進(jìn)行排隊(duì)。根據(jù)標(biāo)記,隊(duì)列中的第一個(gè)節(jié)點(diǎn)LTAG=0,如果LTAG=1,左指針指向團(tuán)隊(duì)中的前一個(gè)元素,如果rtag=1,右指針指向團(tuán)隊(duì)中的下一個(gè)元素。后序遍歷線程二叉樹(shù):先進(jìn)行后序遍歷,然后依次將節(jié)點(diǎn)放入隊(duì)列,然后依次對(duì)隊(duì)列中除根節(jié)點(diǎn)外的節(jié)點(diǎn)進(jìn)行標(biāo)記。隊(duì)列中的第一個(gè)節(jié)點(diǎn)是LTAG=0。如果LTAG=1,則左指針指向隊(duì)列中的前一個(gè)元素。如果rtag=1,
二叉樹(shù)在線索化后,仍不能有效求解的問(wèn)題是中序線索二叉樹(shù)中求中序前趨嗎?
前序遍歷(左中右)和前序遍歷(左中右)的最后訪問(wèn)節(jié)點(diǎn)都是左葉或右葉節(jié)點(diǎn)。葉節(jié)點(diǎn)沒(méi)有子樹(shù),因此兩個(gè)指針字段是空的,可以刪除它們來(lái)存儲(chǔ)提示指針。但是,在隨后的遍歷(左、右、中)中,最后訪問(wèn)的子樹(shù)的根節(jié)點(diǎn)和子樹(shù)的根節(jié)點(diǎn)的兩個(gè)指針字段都指向子樹(shù),因此存儲(chǔ)線索信息不能為空。