预订在树上的后序

时间:2012-05-29 17:54:13

标签: algorithm

我有一个问题,我想从inorder和preorder创建postorder,但我没有wana使用树的重建,我只想递归这样做。我编码这个,在这一刻,我有一个预定的树的右侧的一部分(预订的第一个字符是根,我发现这是在顺序,我有左右两侧,我recurency翻译到右侧) ,但我的树的左侧有问题。我不知道这样做。有人可以给我一些建议或代码吗?请帮助:)

1 个答案:

答案 0 :(得分: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;

第一次测试: String pre =“FBADCEGIH”; String inorder =“ABCDEFGHI”; AN应该是:// A,C,E,D,B,H,I,G,F 我的问题是树的左侧,我不知道这样做是否正确,而且我不确定我的代码是否适用于所有预购和顺序的情况。