build tree with balanced parenthesis

 

Given a tree string expression in balanced parenthesis format:
[A[B[C][D]][E][F]].
Construct a tree and return the root of the tree.
                A
            /   |  \
          B    E   F
         / \
       C   D

 

public void buildGra(String s) {
        int count = 0;
        Map<Integer, ArrayList<Node>> map = new HashMap<>();
        for (char c : s.toCharArray()) {
            if (c == '[') {
                count++;
            } else if (c == ']') {
                count--;
            } else {
                if (!map.containsKey(count)) {
                    map.put(count, new ArrayList<Node>());
                }
                Node n = new Node(c);
                map.get(count).add(n);
                if (map.containsKey(count - 1)) {

                    ArrayList<Node> cur = map.get(count - 1);
                    cur.get(cur.size() - 1).children.add(n);
                }
            }

        }
        Node root = map.get(1).iterator().next();
        for (int i = 0; i < root.children.size(); i++) {
            Node nn = root.children.get(i);
            System.out.println(nn.val);
            root = nn;
        }
    }
    public static void main(String[] args) {
        String s = "[A[B[C][D]][E][F]]";
        Groph g = new Groph();
        g.buildGra(s);
    }

  

  

posted @ 2017-12-03 09:28  apanda009  阅读(161)  评论(0编辑  收藏  举报