二叉樹的中序遍歷圖解例題 怎樣先序線索化二叉樹?
怎樣先序線索化二叉樹?我了解方法:首先,要標記的二叉樹:都設(shè)置兩個標記LTAG,rtag,如果左子指針為空,LTAG=1,如果右子指針為空,rtag=1。按順序遍歷線程二叉樹:首先按順序遍歷線程二叉樹
怎樣先序線索化二叉樹?
我了解方法:首先,要標記的二叉樹:都設(shè)置兩個標記LTAG,rtag,如果左子指針為空,LTAG=1,如果右子指針為空,rtag=1。按順序遍歷線程二叉樹:首先按順序遍歷線程二叉樹,然后將得到的節(jié)點按順序加入隊列。然后,根據(jù)標簽,隊列中的第一個節(jié)點是LTAG=0。如果LTAG=1,則左指針指向團隊中的前一個元素。如果rtag=1,則右指針指向團隊中的下一個元素。中階遍歷線程二叉樹:首先進行中階遍歷,然后依次對得到的節(jié)點進行排隊,然后依次對隊列中除根節(jié)點以外的節(jié)點進行排隊。根據(jù)標記,隊列中的第一個節(jié)點LTAG=0,如果LTAG=1,左指針指向團隊中的前一個元素,如果rtag=1,右指針指向團隊中的下一個元素。以后序方式遍歷線程二叉樹:首先遍歷后序方式,然后依次對隊列中除根節(jié)點外的節(jié)點進行排隊。根據(jù)標記,隊列中的第一個節(jié)點是LTAG=0。如果LTAG=1,則左指針指向隊列中的前一個元素。如果rtag=1,則左指針指向隊列中的前一個元素,
先序遍歷用線索樹方式存儲的二叉樹需要用到棧么?
因為正常的后序線索很難找到后繼者,而前序線索很難找到前序,所以我們只需要解決這個問題。答案是:左邊的一棵樹不需要使用堆棧就可以實現(xiàn)后序線索樹的后序遍歷。此時,由于所有節(jié)點的右子樹都是空的,所以只存儲后序線索,而后序前體只是節(jié)點的左子樹,一棵樹的右子樹可以實現(xiàn)前序線索樹的前序遍歷,而不需要使用堆棧。此時,所有節(jié)點的左子樹都是空的,只是存儲了前序前導的線索,而前序后繼只是節(jié)點的右子節(jié)點
前序遍歷:1 24 8 9 10 11 5 3 6 7(規(guī)則:根在前面;子樹在根之后,左子樹在右子樹的前面);中間順序遍歷:8 4 10 9 11 2 5 1 6 3 7(規(guī)則:根在中間;左子樹在左邊,右子樹在右邊);后順序遍歷:8 10 11 9 4 5 2 6 7 3 1(規(guī)則:根在后面;根前面的子樹和右子樹前面的左子樹);其他示例:前順序遍歷:abdecfg中間順序遍歷:dbeafcg后序遍歷:debfgca前序遍歷:1 24 3 5 7 6中序遍歷:2 4 1 5 7 3 6后序遍歷:4 27 5 6 3 1要做類似的問題,可以先通過兩次遍歷繪制一棵二叉樹。
通過圖像的二叉樹來寫另一個遍歷,寫方法如上(遞歸)。繪制二叉樹的方法是:已知二叉樹的前序序列和中間序列,構(gòu)造二叉樹的過程如下:1。根據(jù)前序序列的第一個元素建立根節(jié)點。在中間序列中找到元素,確定根節(jié)點左右子樹的中間序列。左、右子樹的前序序列在前序序列中確定;4左子樹由左子樹的前序序列和中間序列建立。右子樹由右子樹的前序序列和中間序列建立。