我有一个问题,我想从中序和预序创建后序,但我不想使用树的重建,我只想递归执行此操作。我对此进行了编码,此时,我在预排序中有一部分树的右侧(预排序中的第一个字符是根,我按顺序找到它,并且我有左侧和右侧,我递归转换到右侧) ,但我在树的左侧有问题。我不知道这样做。有人可以给我一些建议或代码吗?请帮忙 :)
问问题
753 次
1 回答
0
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;
第一次测试:字符串 pre = "FBADCEGIH"; 字符串中序 = "ABCDEFGHI"; 答案应该是://A、C、E、D、B、H、I、G、F 我的问题是树的左侧,我不知道如何正确执行此操作,我不确定我的代码适用于所有预购和有序情况。
于 2012-05-29T20:43:20.483 回答