P1305 新二叉树(树,字符串,dfs,洛谷,java)

洛谷链接
在这里插入图片描述
在这里插入图片描述
字符串解法,运用java可变数组

import java.util.Scanner;
public class Main {
	
	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        String s=in.next();
        StringBuffer sb=new StringBuffer(s); //可变字符串
        
        for(int i=2;i<=n;i++) {             //由于第一个为原串,所以单独输入
        	String ss=in.next();
        	String ss2=ss.substring(0,1);
        	int x=sb.indexOf(ss2);          //找到这个子树的根节点在原串中的位置
        	sb.deleteCharAt(x);             //清除根节点
        	sb.insert(x, ss);               //加入子树
        }
        
        for(int i=0;i<sb.length();i++) {
        	if(sb.charAt(i)!='*') {
        		System.out.print(sb.charAt(i));
        	}
        }
	} 
}

深搜解法

import java.util.Scanner;
public class Main {
	static char[][] a=new char[30][3];
	static int n=0;
	
	public static void dfs(char x) {
		if(x!='*') {
			System.out.print(x);
			for(int i=0;i<n;i++) {
				if(a[i][0]==x) {
					dfs(a[i][1]);
					dfs(a[i][2]);
				}
			}
		}
		return;
	}
	
	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
        n=in.nextInt();
        for(int i=0;i<n;i++) {
        	String s=in.next();
        	a[i][0]=s.charAt(0);
        	a[i][1]=s.charAt(1);
        	a[i][2]=s.charAt(2);
        }
        dfs(a[0][0]);
	} 
}
发布了101 篇原创文章 · 获赞 68 · 访问量 3304

猜你喜欢

转载自blog.csdn.net/weixin_44685629/article/details/104496783