二叉樹的中序遍歷

2021-07-11 02:52:33 字數 765 閱讀 3800

對於學過資料結構的人來說,二叉樹和二叉樹上的中序遍歷都是再簡單不過的東西了。這道題就搞搞二叉樹好了,當然,不是一般的二叉樹:)

我們定義一種a二叉樹,它的節點內容可以是任乙個數字或者#,#只能作為葉子節點的內容。

如下就是一棵合法定義的a二叉樹1:

再來一棵不合法的a二叉樹2:

(根節點的左兒子的內容是#,因此不應該有乙個左兒子3)

對於a二叉樹1,我們可以進行對他進行中序遍歷,得到序列(1)#4112#37;對於a二叉樹2,可以得到序列(2)3#912#。儘管序列(2)出自乙個不合法的a二叉樹,但是根據序列(2),可以輕鬆建立一棵合法的a二叉樹3:

那麼,存在乙個無法建立合法的a二叉樹的序列嗎?答案是肯定的。如序列####就無法建立合法的a二叉樹,因為超過乙個結點的二叉樹不可能沒有非葉子結點。題目將給出若干序列,請你判斷該序列是否能建立乙個合法的a二叉樹,使得建立的a二叉樹的中序遍歷結果為該序列。

第一行輸入乙個整數t,代表接下來有多少個樣例。 接下來有t行輸入,每行輸入為僅包含數字與#的字串,字串長度小於等於100000。

對於每個給定樣例,輸出一行結果並換行。如果能夠建立,則輸出yes,否則no

3#4112#373#912#####

yes

yes no

水題:

#include#includechar a[100001];

int main()

}if(p==0)

if(p==1)

}}

二叉樹中序遍歷

訪問根結點的的左子樹,訪問根結點和訪問根結點的右子樹依次記作 l,d r 中序遍歷 ldr 演算法 遍歷根結點的左子樹,訪問根結點 遍歷根結點的右子樹 對於上面的圖,我們假定只有a,b,c三個結點,則中序遍歷結果為 b a c 採用上節 二叉樹鏈式儲存和前序遍歷 中的遞迴推演 db a c d b ...

二叉樹中序遍歷

二叉樹中序遍歷 非遞迴版本的中序遍歷用棧來實現。乙個元素出現在棧頂一次,這一次會被處理並出棧。trick 用乙個指標去記錄當前節點cur,如果cur left左側還未遍歷,就會將cur入棧並訪問cur left。一行很重要的 是cur cur right,這一句之後如果cur null,則說明棧頂元...

二叉樹先序遍歷和中序遍歷確定二叉樹

由於希望得到一顆二叉樹,所以返回值型別是乙個指向根節點的指標 表示得到了一顆二叉樹 btnode creatbt char pre,char int,int l1,int r1,int l2,int r2 引數列表有傳入的先序序列和後序序列和他們的開頭和結尾 由於是遞迴函式,先寫乙個遞迴出口,顯然是...