0

私は、順序順および後順トラバーサルを指定してツリーを作成するという問題に慣れようとしていました。次のコードを書きましたが、何か問題が発生していて、それを見つけることができませんでした。誰かがこれについて私を助けることができますか?

サンプル i/p:

in[] = {4,10,3,1,7,11,8,2}; int post[] = {4,1,3,10,11,8,2,7};

public static TreeNode buildInorderPostorder( int post[], int n, int offset,Map<Integer,Integer> indexMap,int size) {     
      if (size <= 0) return null;
      int rootVal = post[n-1];
      int i = (indexMap.get(rootVal) - offset);
      TreeNode root = new TreeNode(rootVal);
      root.setLeft(buildInorderPostorder( post, i, offset,indexMap,i-offset));
      root.setRight(buildInorderPostorder(post, n-1, offset+i,indexMap,n-1-i));
      return root;
    }
4

1 に答える 1

0

root.setRight間違っているようです。オフセットはoffset+iであってはなりませんoffset+i+1

root.setRight(buildInorderPostorder(post, n-1, offset+i+1,indexMap,n-1-i));
于 2013-03-26T20:03:48.213 に答える