已經二叉樹的前序遍歷和中序遍歷 寫出後序遍歷演算法

2022-04-11 17:22:31 字數 847 閱讀 1967

前序遍歷:根左右

中序遍歷:左根右

後序遍歷:左右根

#include int find(char c,char a,int s,int e)}/*

其中pre表示先序序,pre_s為先序的起始位置,pre_e為先序的終止位置。

*//*

其中in表示中序,in_s為中序的起始位置,in_e為中序的終止位置。

*//*

pronum()求出pre[pre_s~pre_e]、in[in_s~in_e]構成的後序序列。

*/void pronum(char pre,int pre_s,int pre_e,char

in,int in_s,int in_e)                  /*

非法子樹,完成。

*/if(in_s==in_e)

c=pre[pre_s];     /*

c儲存根節點。

*/k=find(c,in,in_s,in_e);     /*

在中序中找出根節點的位置。

*/pronum(pre,pre_s+1,pre_s+k-in_s,in,in_s,k-1); /*

遞迴求解分割的左子樹。

*/pronum(pre,pre_s+k-in_s+1,pre_e,in,k+1,in_e); /*

遞迴求解分割的右子樹。

*/printf("%c

",c);     /*

根節點輸出。 */}

main()

前序遍歷和中序遍歷重建二叉樹

根據先序序列和中序序列的特點我們可以知道 1 先序的第乙個節點是根節點 2 在中序序列中,根結點前邊的結點都是左子樹中的,根結點右邊的結點都是右子樹中的 3 通過左右子樹的中序序列帶入前序序列可以求出左右子樹的前序序列 4 左右子樹的前序序列第乙個元素分別是根節點的左右孩子 5 可以遞迴上述步驟來重...

二叉樹的前序遍歷 中序遍歷和後序遍歷

include includeusing namespace std typedef struct bitnodebitnode,bitree void initbitree bitree t 構造空二叉樹 void createbitree bitree t 生成二叉樹 void preorder...

二叉樹的遍歷 前序遍歷 中序遍歷 後序遍歷

二叉樹的遍歷分為前序遍歷 中序遍歷 後序遍歷 前序遍歷是指,對於樹中的任意節點來說,先列印這個節點,然後再列印它的左子樹,最後列印它的右子樹。中序遍歷是指,對於樹中的任意節點來說,先列印它的左子樹,然後再列印它本身,最後列印它的右子樹。後序遍歷是指,對於樹中的任意節點來說,先列印它的左子樹,然後再列...