输入一串序列,构建二叉树(该序列为二叉树层次遍历的结果)
Input: 8,8,7,9,2,#,#,#,#,4
Output:
节点:
class TreeNode {
public TreeNode left;
public TreeNode right;
public char val;
public TreeNode(char val) {
this.val = val;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "" + val;
}
}
创建树:
public static TreeNode createTree(String str) {
str = str.replaceAll(",", "");
TreeNode node = null;
TreeNode head = null;
Queue<TreeNode> queen = new ArrayDeque<TreeNode>();
boolean left = true;
boolean right = false;
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (head == null) {
head = new TreeNode(c);
node = head;
//queen.add(node);
} else {
TreeNode optional = (c == '#') ? null : new TreeNode(c);
if (left) {
left = false;
right = true;
TreeNode t = node;
t.left = optional;
} else if (right) {
left = true;
right = false;
TreeNode t = node;
t.right = optional;
node = queen.poll();
}
if(optional!=null){
queen.add(optional);
}
}
}
return head;
}
测试:
public static void main(String[] args) {
TreeNode head = createTree("8,8,7,9,2,#,#,#,#,4".replaceAll(",", ""));
print(head);
}
private static void print(TreeNode head) {
if (head != null) {
System.out.println(head.val);
print(head.left);
print(head.right);
}
}
结果:
8
8
9
2
4
7
8
9
2
4
7