经典二叉树问题 根据前序和中序生成后序

转载请注明作者与出处:franciscolv http://www.cnblogs.com/franciscolv/archive/2011/11/20/2255868.html

package SortSet;

/**
* 根据前序和中序打印后序
*
*
@author Administrator
*
*/
public class BinarayTreeOrder {

private static StringBuilder sb = new StringBuilder();
public static void main(String[] args) {
int[] inorder = { 1, 5, 4, 2, 3, 8, 7 };
int[] preorder = { 2, 5, 1, 4, 8, 3, 7 };
printPosOrder(preorder,inorder,0, 6, 0, 6);
sb.deleteCharAt(sb.length() - 1);
System.out.println(sb.toString());
}

public static void printPosOrder(int[]preorder,int[] inorder,int preleft, int preright, int inleft,
int inright) {
int parent, leftsize, rightsize;
if (preleft <= preright && inleft <= inright) {
for (parent = inleft; parent <= inright; parent++) {
if (inorder[parent] == preorder[preleft])
break;
}
leftsize = parent - inleft;
rightsize = inright - parent;
if (leftsize > 0) {
printPosOrder(preorder,inorder,preleft + 1, preleft + leftsize, inleft,
parent - 1);
}
if (rightsize > 0) {
printPosOrder(preorder,inorder,preleft + leftsize + 1, preright, parent + 1,
inright);
}
sb.append(inorder[parent]).append(",");
}
}
}



转载于:https://www.cnblogs.com/franciscolv/archive/2011/11/20/2255868.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值