已知前序遍歷和中序遍歷求二叉樹

2021-08-28 04:55:32 字數 1373 閱讀 5118

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

輸入某二叉樹的前序遍歷和中序遍歷的結果

輸出後序遍歷序列

1 2 4 7 3 5 6 8

4 7 2 1 5 3 8 6

7 4 2 5 8 6 3 1

前序遍歷即先訪問根節點,然後是左子樹,右子樹

中序遍歷為先訪問左子樹,然後是根節點,右子樹

所以通過前序遍歷不斷地找到根節點,然後中序遍歷找到其左子樹和右子樹

最後就可以得到這棵二叉樹,後序遍歷即為 7 4 2 5 8 6 3 1

#include#include#includetypedef struct node* bintree; 

struct node;

bintree build(int pre ,int in ,int size)

void postorder(bintree t) //後序遍歷 }

int main()

else //如果前乙個元素不是空格,那麼說明與前乙個元素一同構成的數 例如:10 }}

}int incount=0;

for(i=0;i='0'&&inn[i]<='9')

else}}

} //如果前序遍歷的結點數與中序遍歷的結點數相同且不為0,那麼可以找到對應二叉樹

if(precount==incount&&precount!=0)

return 0;

}

已知前序遍歷中序遍歷,求二叉樹的後序遍歷

陣列下標01 2345 67前序遍歷74 1653 82中序遍歷14 5678 32在二叉樹的前序遍歷中,第乙個數字總是樹的根節點的值。在中序遍歷中找到根節點,則根節點左邊的數字就是左子樹節點值,根節點右邊的數字就是右子樹節點值。使用遞迴的思想去分割左右子樹。在前序遍歷中,第乙個數字是7,是樹的根節...

已知二叉樹的前序遍歷,中序遍歷,求後序遍歷的問題。

首先先說下二叉樹的結構吧,對於如下圖1所示的結構,a為根節點,b為左子樹,c 為右子樹。圖1 現在開始切入正題,先解釋下二叉樹的前序遍歷,中序遍歷,和後序遍歷吧。1.前序遍歷 先遍歷根結點,然後遍歷左子樹,最後遍歷右子樹。2.中序遍歷 先遍歷左子樹,然後遍歷根結點,最後遍歷右子樹。3.後序遍歷 先遍...

二叉樹 已知前序遍歷和中序遍歷,輸出後續遍歷

已知某二叉樹的先序序列和中序序列,程式設計計算並輸出該二叉樹的後序序列。輸入說明 僅一組資料,分為兩行輸入,第一行表示指定二叉樹的先序序列,第二行表示該二叉樹的中序序列,序列元素均為大寫英文本元,表示二叉樹的結點。輸出說明 在一行上輸出該二叉樹的後序序列。輸入樣本 abdgcefh dgbaechf...