二叉树序列之间的转换(不建立树)

1.已知前序和中序序列,求后序序列?

    private static ArrayList<Character> list = new ArrayList<>();

	public static void getPostOrder(char[] pre, int preL, int preR, char[] in, int inL, int inR) {
		if (preL > preR || inL > inR)
			return;
		char temp = pre[preL];
		int i = inL;
		while (in[i] != temp && i <= inR)
			i++;
		getPostOrder(pre, preL + 1, preL + i - inL, in, inL, i - 1);
		getPostOrder(pre, preR - inR + i + 1, preR, in, i + 1, inR);
		list.add(temp);
	}

	public static void PostOrder(char[] pre, char[] in) {
		int preR = pre.length - 1;
		int inR = in.length - 1;
		getPostOrder(pre, 0, preR, in, 0, inR);
	}

2.已知中序和后序序列,求前序序列?

private static ArrayList<Character> list = new ArrayList<>();

public static void getPreOrder(char[] in, int inL, int inR, char[] post, int postL, int postR) {
		if (inL > inR || postL > postR)
			return;
		char temp = post[postR];
		int i = inL;
		while (in[i] != temp && i <= inR)
			i++;
		list.add(temp);
		getPreOrder(in, inL, i - 1, post, postL, i - 1 - inL + postL);
		getPreOrder(in, i + 1, inR, post, postR - inR + i, postR - 1);

	}

	public static void PreOrder(char[] in, char[] post) {
		int inR = in.length - 1;
		int postR = post.length - 1;
		getPreOrder(in, 0, inR, post, 0, postR);
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值