栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

POJ2255 java

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

POJ2255 java

先序遍历:根,左,右
中序遍历:左,右,根
后序遍历:左,右,根

每次我们只需要传入树mid中的开始位置,和结束为止
首先,先序遍历的第一个为根元素
我们只需要遍历pre数组中的字符
并找到此字符在mid数组中的对应位置,他就是此树对应的根元素
在mid中他的左边就是他的左子树,右边就是右子树
再分别对左 右子树按照刚才的方法递归
直到开始位置>结束位置说明没有左子树或者右子树了,就输出此结点
import java.util.Scanner;

public class Main2 {
    private static char[] pre;
    private static char[] mid;
    private static int p=-1;//pre数组的指针

    public static void main(String[] args) {
    	Scanner sc=new Scanner(System.in);
    	while(sc.hasNext()) {
    		pre=sc.next().toCharArray();
    		mid=sc.next().toCharArray();
    		tree(0,pre.length-1);
    		System.out.println();
    		p=-1;//指针置为-1
    	}
    }

	private static void tree(int start, int end) {
		if(start>end) {//没有左子树了  或  没有右子树了
			return;
		}
		p++;//首先指针+1
		for (int k = start; k <= end; k++) {//从树的开始位置到结束为止循环
			if(pre[p]==mid[k]) {//找到
				tree(start, k-1);//先输出看左子树
				tree(k+1, end);//再输出右子树
				System.out.print(mid[k]);//最后输出根元素
				break;
			}
		}
	}
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/328532.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号