public class Solution{
public static void main(String[] args) {
Solution test=new Solution();
Node root=test.getNode("ABDECFG",0,"DBEAFGC",0,7);
System.out.println(test.getPostOrder(root));
}
class Node{
char val;
Node left;
Node right;
}
public Node getNode(String preOrder,int l1,String midOrder,int l2,int len){
Node ret=new Node();
char ch=preOrder.charAt(l1);
ret.val=ch;
if(len==1){
return ret;
}
int n=l2+len;
for(int i=l2;i<n;i++){
if(midOrder.charAt(i)==ch){
if(i-l2>0){
ret.left=getNode(preOrder,l1+1,midOrder,l2,i-l2);
}
if(n-1-i>0){
ret.right=getNode(preOrder,l1+1+i-l2,midOrder,i+1,n-i-1);
}
return ret;
}
}
return null;
}
public String getPostOrder(Node root){//后序序列
if(root==null){
return "";
}
String left=getPostOrder(root.left);
String right=getPostOrder(root.right);
return left+right+String.valueOf(root.val);
}
}
先序和中序产生后序
最新推荐文章于 2024-08-12 18:10:44 发布