0
我有一個問題,我想創建後序從訂購和預購,但我不wana使用樹的重建,我只想遞歸做到這一點。我編碼,在這一刻,我有一部分,在樹的右側(預先排序中的第一個字符是根,我發現這個在順序中,並且我有左和右側,我確信轉化到右側) ,但我在樹的左側有問題。我不知道要這樣做。有人可以給我一些建議或代碼嗎?請幫助:)預購在樹中後推
我有一個問題,我想創建後序從訂購和預購,但我不wana使用樹的重建,我只想遞歸做到這一點。我編碼,在這一刻,我有一部分,在樹的右側(預先排序中的第一個字符是根,我發現這個在順序中,並且我有左和右側,我確信轉化到右側) ,但我在樹的左側有問題。我不知道要這樣做。有人可以給我一些建議或代碼嗎?請幫助:)預購在樹中後推
public static String a(String pre, String in, int start, int end) {
char c = pre.charAt(start); //first char in preorder is root
int ix = find(pre, in, c); // if we find this char in inorder translation we know where is left and right side of tree
stack += c;
if (start == 0 && flaga == true) {
left = pre.substring(1, ix + 1);
right = pre.substring(ix + 1, end);
flaga = false;
return a(right, in, 0, end);
}
String reverse = new StringBuffer(stos).reverse().toString();
//stack to see
// System.out.println("STACK " + stos);
if (start < right.length()-1) {
return a(right, in, start + 1, end - 1);
}
return "";
}
public static int find(String a, String b, char c) {
int b_l = b.length();
for (int i = 0; i < b_l; ++i)
if (b.charAt(i) == c)
return i;
return -1;
第一個測試: 字符串預= 「FBADCEGIH」; String inorder =「ABCDEFGHI」; 答案應該是:// A,C,E,D,B,H,I,G,F 我的問題是與左側的樹,我沒有任何想法做到這一點正確,我不確定我的代碼適用於所有前序和中序的情況。
哦,我忘了,我已經預先訂購,並從兩個字符串中;) – pkruk
是你的樹二叉樹? – ControlAltDel
一個例子可能會有幫助。 – biziclop