#includeusing namespace std;
#define n 100
typedef struct bitnode bitnode,*bitree;
void inittree(bitree& t)
void preorder(bitree& t)
void midorder(bitree& t)
bitree createtree(char *pre, char *mid, int n) //將前序遍歷和中序遍歷不斷以前序遍歷的結點(來確認中序遍歷中該結點的位置)乙個個細分為左右子樹
bitree t; //建立臨時結點
t = new bitnode;
if (t == null) return null;
char c;
int j = 0;
c = pre[0];
t->data = pre[0]; //前序遍歷的第乙個數就是根節點
char lpre[n], rpre[n], lmid[n], rmid[n]; //建立陣列,分別儲存左、右子樹的前序遍歷和中序遍歷
for (int i = 0; i < n; i++) //在中序遍歷中查詢根結點
//cout << j << endl;
for (int i = 0; i < j; i++) //經過上面的操作找到根結點後,將中序遍歷分成左右子樹,
for (int i = 1,k=0; i < j+1; i++,k++) //lpre[1]為左子樹的根結點
for (int i = j+1,k=0; i < n; i++,k++)
int z = n - j-1; //右子樹的長度
t->lchild= createtree(lpre, lmid,j); //用遞迴來確認左子樹,直到子樹長度=0
t->rchild= createtree(rpre, rmid, z); //用遞迴來確認右子樹,知道子樹長度=0;
return t;
}int main()
cout << "請輸入中序遍歷:" << endl;
while (cin >> e && e != '#')
t=createtree(pre, mid,ipre); //
cout << "前序遍歷結果為:";
preorder(t);
cout << endl;
cout << "中序遍歷結果為:";
midorder(t);
system("pause");
}
樹的遍歷 先序遍歷 中序遍歷 後序遍歷
名詞解釋 1 每個元素稱為節點 2 有乙個特定的節點被稱為根節點或樹根 3 除根節點外的其餘資料元素被分為m個互不相交的集合t1,t2,t3.tm 1,其中每乙個集合ti本身也是乙個樹,被稱作原樹的子樹 節點的度 乙個節點含有子樹的個數稱為該節點的度 葉節點或終端節點 度為0的節點稱為葉節點 非終端...
根據後序和中序遍歷輸出先序遍歷
本題要求根據給定的一棵二叉樹的後序遍歷和中序遍歷結果,輸出該樹的先序遍歷結果。輸入格式 第一行給出正整數nn le 30 30 是樹中結點的個數。隨後兩行,每行給出nn個整數,分別對應後序遍歷和中序遍歷結果,數字間以空格分隔。題目保證輸入正確對應一棵二叉樹。輸出格式 在一行中輸出preorder 以...
根據後序和中序遍歷輸出先序遍歷
本題要求根據給定的一棵二叉樹的後序遍歷和中序遍歷結果,輸出該樹的先序遍歷結果。第一行給出正整數n 30 是樹中結點的個數。隨後兩行,每行給出n個整數,分別對應後序遍歷和中序遍歷結果,數字間以空格分隔。題目保證輸入正確對應一棵二叉樹。在一行中輸出preorder 以及該樹的先序遍歷結果。數字間有1個空...