題目描述
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。
struct treenode
};class solution
}//中序遍歷根節點左邊的排序是左子樹的中序遍歷
for(int i = 0; i < gen; i++)
//同理右邊是右子樹的中序遍歷,相對應前序遍歷的i
for(int i = gen + 1; i < in.size(); i++)
//歸併
head -> left = reconstructbinarytree(left_pre, left_in);
head -> right = reconstructbinarytree(right_pre, right_in);
return head;
}};
已知後續遍歷和中序遍歷的情況
class solution
}for(int i = 0; i < gen; i++)
for(int i = gen + 1; i < in.size(); i++)
head -> left = reconstructbinarytree(left_last, left_in);
head -> right = reconstructbinarytree(right_last, right_in);
return head;
}};
題目的其他解法:
public class solution
//前序遍歷和中序遍歷序列
private treenode reconstructbinarytree(int pre,int startpre,int endpre,int in,int startin,int endin)
return root;
}}
已知中序遍歷和後序遍歷,求前序遍歷
已知中序遍歷和後序遍歷,求前序遍歷 演算法的主要部分是將中序遍歷分成左中右三部分 將後序遍歷分成左右中三部分 最後後序建樹的時候節點就等於中間的部分 左子樹由中序遍歷的左部分和後序遍歷的左部分構建 右子樹由中序遍歷的右部分和後序遍歷的右部分構建 include include include inc...
已知後序遍歷和中序遍歷求前序遍歷
而已知後序遍歷和中序遍歷求前序遍歷的過程差不多,但由於後序遍歷是最後才訪問根節點的 所以要從後開始搜尋,例如上面的例子,後序遍歷為 gbdehfca,中序遍歷為 dgbaechf 後序遍歷中的最後乙個元素是根節點,a,然後查詢中序中a的位置 把中序遍歷分成 dgb a echf,而因為節點個數要對應...
二叉樹 已知前序遍歷和中序遍歷,輸出後續遍歷
已知某二叉樹的先序序列和中序序列,程式設計計算並輸出該二叉樹的後序序列。輸入說明 僅一組資料,分為兩行輸入,第一行表示指定二叉樹的先序序列,第二行表示該二叉樹的中序序列,序列元素均為大寫英文本元,表示二叉樹的結點。輸出說明 在一行上輸出該二叉樹的後序序列。輸入樣本 abdgcefh dgbaechf...