筆試常考題型之二叉樹的遍歷


一、介紹

在互聯網公司的筆試題中,經常會出現給出一個二叉樹的前序和中序遍歷,讓你去求它的后序遍歷問題,因此我將這類題型的解題步驟總結如下。

 

二、例題

題目解析:

注:此題中f節點的爸爸是d。

前序遍歷順序 根->左->右:abefd。

中序遍歷順序 左->根->右:ebadf。

后序遍歷順序 左->右->根:ebfda。

 

題目解析:

二叉搜索樹有一個很重要的特性:樹中任何結點的左子樹中所有結點的值均比該結點小,右子樹中所有結點的值均比該結點大。對二叉搜索樹進行中序遍歷即得到一個遞增排序的序列。

因此,檢查一個樹是否是二叉搜索樹可以使用中序遍歷,根據遞增排序的序列生成二權搜索樹也可以使用中序遍歷。

參考資料:二叉搜索樹的簡單介紹   二叉排序_搜索_查找樹 C++

 

題目解析:

1,先序遍歷的第一個節點肯定是根節點,所以A為該二叉樹的根節點。

2,中序遍歷中根節點左側的節點全是根節點左子樹的節點,根節點右側的節點全是根節點的右子樹。所以我們可以分成 DCB(左) | A(根) | EFG(右)。

3,遞歸使用上述兩個步驟,可以畫出整個二叉樹。

(1)先得出A是根節點。

(2)DCB是A左子樹中的點,EFG是A右子樹中的點。

(1)B是A左子樹的根節點,E是A右子樹的根節點。

(2)CD是B左子樹中的點,FG是E右子樹中的點。

(1)C是B左子樹的根節點,F是E右子樹的根節點。

(2)D是C左子樹中的點,G是F右子樹中的點。

因此該二叉樹的后序遍歷為(左->右->根):DCBGFEA。

 

三、解題感受

遇到這種問題,記得先找出根節點,然后找出根節點左邊的節點和根節點右邊的節點,然后以此類推,找出根節點左子樹的根節點和右子樹的根節點...最后可以根據前序和中序遍歷畫出一個二叉樹,再根據畫出的二叉樹(前提是要保證之前的步驟都正確)求出后序遍歷。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM