根據(jù)后序和中序遍歷求先序遍歷
來源 :華課網(wǎng)校 2024-07-31 07:48:23
中二叉樹的遍歷是指按照某種順序依次訪問二叉樹中的每個(gè)節(jié)點(diǎn)。常見的遍歷方式有先序遍歷、中序遍歷和后序遍歷。先序遍歷指先訪問根節(jié)點(diǎn),然后按照左子樹、右子樹的順序依次遍歷;中序遍歷指先訪問左子樹,然后訪問根節(jié)點(diǎn),最后訪問右子樹;后序遍歷指先訪問左子樹,然后訪問右子樹,最后訪問根節(jié)點(diǎn)。
在已知二叉樹的后序遍歷和中序遍歷的情況下,如何求出先序遍歷呢?這里介紹一種基于遞歸的算法。
首先,我們知道后序遍歷的最后一個(gè)節(jié)點(diǎn)一定是根節(jié)點(diǎn)。在中序遍歷中,根節(jié)點(diǎn)左邊的部分是左子樹,右邊的部分是右子樹。因此,我們可以先根據(jù)后序遍歷找到根節(jié)點(diǎn),然后在中序遍歷中找到根節(jié)點(diǎn)所在的位置,將中序遍歷劃分為左子樹和右子樹兩部分。
接下來,我們可以遞歸地處理左子樹和右子樹。對(duì)于左子樹,其后序遍歷的最后一個(gè)節(jié)點(diǎn)是左子樹的根節(jié)點(diǎn),而中序遍歷中根節(jié)點(diǎn)左邊的部分是左子樹。因此,我們可以遞歸地處理左子樹,并將左子樹的先序遍歷拼接到根節(jié)點(diǎn)之后。對(duì)于右子樹同理。
最后,我們將根節(jié)點(diǎn)的值加入先序遍歷的結(jié)果中,即得到了完整的先序遍歷。
下面是基于遞歸的代碼實(shí)現(xiàn):
```
def buildTree(inorder, postorder):
if not inorder or not postorder:
return None
root = TreeNode(postorder[-1])
index = inorder.index(root.val)
root.left = buildTree(inorder[:index], postorder[:index])
root.right = buildTree(inorder[index+1:], postorder[index:-1])
return root
def preorderTraversal(root):
if not root:
return []
return [root.val] + preorderTraversal(root.left) + preorderTraversal(root.right)
inorder = [9,3,15,20,7]
postorder = [9,15,7,20,3]
root = buildTree(inorder, postorder)
preorder = preorderTraversal(root)
print(preorder)
```
運(yùn)行結(jié)果為:[3, 9, 20, 15, 7]
這里通過buildTree函數(shù)先構(gòu)建出二叉樹,然后再通過preorderTraversal函數(shù)求出先序遍歷。具體實(shí)現(xiàn)中,我們通過postorder[-1]找到根節(jié)點(diǎn)的值,再通過inorder.index(root.val)找到根節(jié)點(diǎn)在中序遍歷中的位置,然后遞歸地處理左子樹和右子樹。最后,我們將根節(jié)點(diǎn)的值加入結(jié)果中,即得到了完整的先序遍歷。
總之,根據(jù)后序遍歷和中序遍歷求先序遍歷的方法可以通過遞歸實(shí)現(xiàn)。在實(shí)際應(yīng)用中,這種方法可以用于解決一些二叉樹遍歷相關(guān)的問題。
您可能感興趣的文章
相關(guān)推薦
熱門閱讀
-
閃爍之光漢化破解版
2024-07-31
-
手機(jī)怎么看國慶閱兵直播節(jié)目
2024-07-31
-
惠州優(yōu)信達(dá)二手車2023
2024-07-31
-
禁止左轉(zhuǎn)會(huì)被攝像頭拍到嗎?
2024-07-31
-
電瓶加水加什么水最好
2024-07-31
-
紅綠燈左轉(zhuǎn)車道直行算闖紅燈嗎了怎么辦
2024-07-31
-
aj6口袋真假對(duì)比
2024-07-31
-
膽機(jī)功放的使用壽命多久?
2024-07-31
-
win11你的電腦未正確啟動(dòng)
2024-07-31
-
仔仔細(xì)細(xì)是成語嗎
2024-07-31
-
aj6口袋真假對(duì)比
2024-07-31
-
膽機(jī)功放的使用壽命多久?
2024-07-31
-
win11你的電腦未正確啟動(dòng)
2024-07-31
-
仔仔細(xì)細(xì)是成語嗎
2024-07-31
最新文章
-
中國的卡通人物有很多英語
2024-07-31
-
微信群聊名稱大全朋友圈怎么改
2024-07-31
-
材料題作文素材大全
2024-07-31
-
天空中的啟明星是什么星座
2024-07-31
-
女人夢(mèng)到白蛇預(yù)示著什么預(yù)兆
2024-07-31
-
感動(dòng)的近義詞是什么呀英語
2024-07-31
-
cad小鍵盤怎么關(guān)閉
2024-07-31
-
日本久光鎮(zhèn)痛貼效果怎么樣
2024-07-31
-
廣電網(wǎng)絡(luò)手機(jī)連不上,可以看電視
2024-07-31
-
雞肉怎么做吃起來比較嫩
2024-07-31
-
永康是金華的縣級(jí)市么?
2024-07-31
-
路由器p/n是什么意思
2024-07-31
-
曹操戰(zhàn)宛城歇后語下一句
2024-07-31
-
迪士尼密碼箱的密碼忘記了怎么打開手機(jī)
2024-07-31