題目很簡單,給你一棵二叉樹的後序和中序序列,求出它的前序序列(so easy!)。
輸入有多組資料(少於100組),以檔案結尾結束。
每組資料僅一行,包括兩個字串,中間用空格隔開,分別表示二叉樹的後序和中序序列(字串長度小於26,輸入資料保證合法)。
每組輸出資料單獨佔一行,輸出對應得先序序列。
acbfged abcdefgcdab cbad
dbacegfbcad
#include#include#includetypedef struct nodenode,*nod;
void sad(char *last,char *mid,nod &root,int len)//不太明白為什麼要這樣寫->nod &root
char ch=last[len-1];
int i=0;
while(mid[i]!=ch)
//給根節點分配空間
root=(nod)malloc(sizeof(node));
root->data = mid[i];
//建立左子樹
sad(last,mid,root->leftchild ,i);
//建立右子數
sad(last+i,mid+i+1,root->rightchild ,len-i-1); }
void dlr(node *root)//先序輸出
}int main()
return 0;
}
重建二叉樹 遞迴實現
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。根據先序 後續 遍歷序列確定根節點,例如先序遍歷,序列的第乙個節點為根節點,這是先序遍歷的特點,然後在中序遍歷序列中找該節點,該節點...
重建二叉樹 遞迴求解
題目 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。首先需要明白的基礎知識 下面說一下整體的思路找到根節點在中序遍歷中的索引index拿到該索引後我們可以知道左子樹和右子樹的節點數量 為了節省記憶體空間,我們對左右子樹進行遞迴的時候不再...
遞迴之重建二叉樹
主要借助這些題加強對遞迴的使用 如下 definition for binary tree struct treenode class solution 對於中序遍歷,根節點左邊的節點位於二叉樹的左邊,根節點右邊的節點位於二叉樹的右邊 利用上述這點,對二叉樹節點進行歸併 for int i 0 i ...