學習筆記 樹 二叉樹

2021-10-08 08:27:20 字數 539 閱讀 4890

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。

本題主要採用遞迴的思想。首先介紹一下根據前序遍歷和中序遍歷來構建二叉樹的思路:前序遍歷的第乙個則是二叉樹的根,找到根在中序遍歷中的位置,則根將中序遍歷分為了兩部分,根的左邊為二叉樹的左子樹,根的右邊為二叉樹的右子樹,對應左右子樹在可前序遍歷中是連續存在的,根據該思路可以繼續分別尋找左子樹與右子樹的根節點,遞迴進行。首先判斷二叉樹是否為空,進行長度的判斷即可。還要注意將根定義成節點的形式。在進行本函式的遞迴呼叫時,需要在本函式名前面加上self。

二叉樹學習筆記

二叉樹是樹的一種特殊結構,也是一種極為重要的樹,二叉樹最重要的操作是遍歷,即按照一定的順序訪問樹中的所有節點,常見的遍歷方式有 對遍歷來說,最容易想到的方式就是遞迴,遞迴 簡單,但是效率不高,需要的棧空間比較大,非遞迴的方法 較為複雜,不過效率較高。遞迴實現 void preordervisit b...

二叉樹學習筆記

1.訪問根節點 2.在訪問第 l 層時,將 l 1 層的節點按順序儲存到佇列中 3.進入下一層並訪問該層的所有節點 4.重複上述操作直到所有層都訪問完 時間複雜度 o n 空間複雜度o n 最壞的情況下,最後一層的所有節點可能在佇列中 void levelorder node root q.dele...

二叉樹學習筆記

二.遞迴解法 三.非遞迴解法 include using namespace std char ch typedef char elemtype typedef struct bitnodebitnode,bitree 先序序列存入 void createbitree bitree t 採用先序遍歷...