普及练习场 树形数据结构 新二叉树

本文介绍了一种利用Java中的Map来存储二叉树的方法,通过将节点信息映射到字符节点上,实现了一种简单而高效的二叉树构建方式。文章通过具体的代码示例展示了如何读取输入并构建二叉树,以及如何遍历打印这棵树。

题目链接

题意理解

这题其实可以直接建树做,但是我偷懒了一下,直接在map里面存储了序号与树的对应关系。

代码

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;


public class Main {
    public static class FastScanner {
        private BufferedReader br;
        private StringTokenizer st;

        public FastScanner() {
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        public String nextToken() {
            while(null == st || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (Exception e) {
                }
            }
            return st.nextToken();
        }

        public int nextInt() {
            return Integer.valueOf(nextToken());
        }
    }
    static Map<Character, Node> map = new HashMap<>();
    public static class Node {
        char value;
        char left;
        char right;
        public Node(String str) {
            value = str.charAt(0);
            left = str.charAt(1);
            right = str.charAt(2);
        }

        public void print() {
            System.out.print(value);
            if(left != '*') {
                Node lc = map.get(left);
                lc.print();
            }
            if(right != '*') {
                Node rc = map.get(right);
                rc.print();
            }
        }

    }
    static int N;
    static Node[] node;
    public static void main(String[] args) {
        FastScanner fs = new FastScanner();
        N = fs.nextInt();
        node = new Node[N];
        for(int i = 0; i < N; i++) {
            String string = fs.nextToken();
            node[i] = new Node(string);
            map.put(string.charAt(0), node[i]);
        }
        node[0].print();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值