题目描述:输入[3,null,15,7,2,null,8,9],要求创建出如下二叉树:
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
import java.util.Scanner;
//二叉树定义
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode() {}
TreeNode(int val) { this.val = val; }
TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
public void setVal(int val) {
this.val = val;
}
public void setLeft(TreeNode left) {
this.left = left;
}
public void setRight(TreeNode right) {
this.right = right;
}
}
public class Solution {
//层序遍历创建二叉树
public static TreeNode create(String[] s){
TreeNode p = new TreeNode(Integer.parseInt(s[0]));
TreeNode q = p;
Queue<TreeNode> queue = new LinkedList<>();
int i=0;
while(p!=null){
if(2*i+1<s.length){
if(!s[2*i+1].equals("null")){
p.left = new TreeNode(Integer.parseInt(s[2*i+1]));
queue.offer(p.left);
}
}
if(2*i+2<s.length){
if(!s[2*i+2].equals("null")){
p.right = new TreeNode(Integer.parseInt(s[2*i+2]));
queue.offer(p.right);
}
}
p = queue.poll();
i++;
}
return q;
}
//前序遍历二叉树
public static void preOrderTraveral(TreeNode node){
if(node == null){
return;
}
System.out.print(node.val+" ");
preOrderTraveral(node.left);
preOrderTraveral(node.right);
}
static int index = 0;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str1 = sc.nextLine();
//System.out.println(str1);
//System.out.println(str1.substring(1,str1.length()-1));
String[] s = str1.substring(1,str1.length()-1).split(",");
TreeNode root= new TreeNode();
root = create(s);
preOrderTraveral(root);
// for (String out: s
// ) {
// if(out.equals("null"))
// System.out.println(0);
// else
// System.out.println(out);
//
// }
}
}