您的位置:首页 > 编程语言 > Java开发

Java 构建二叉树

2015-10-01 20:42 615 查看
输入一串序列,构建二叉树(该序列为二叉树层次遍历的结果)

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 二叉树