一、问题描述
二、实现思路
问题给出了层序遍历序列,我们使用队列来实现二叉树的构造过程:
这里注意:在写代码时,比较字符串数组内元素str和某个字符串是否相等时用str.equals("#")的操作,如果用== 会引发比较错误!
三、代码实现
import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* public TreeNode(int val) {
* this.val = val;
* }
* }
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param data string字符串
* @return TreeNode类
*/
public TreeNode buildTree (String data) {
//首先要把data进行分割,存入数组
String[] strArr=data.split(" ");
System.out.println(Arrays.toString(strArr));
if(strArr.length==0||strArr[0]=="#"){
return null;
}else{
Queue<TreeNode> nodeque=new LinkedList<>();
TreeNode head=new TreeNode(Integer.valueOf(strArr[0]));
nodeque.add(head);
int icounter=1;
while(nodeque.size()>0){
TreeNode pointer=nodeque.poll();
//注意这里要使用equals来比较strArr[icounter]和"#"
if(icounter<strArr.length&&!strArr[icounter].equals("#")){
TreeNode leftnode=new TreeNode(Integer.valueOf(strArr[icounter]));
pointer.left=leftnode;
nodeque.add(leftnode);
}
icounter++;
if(icounter<strArr.length&&!strArr[icounter].equals("#")){
TreeNode rightnode=new TreeNode(Integer.valueOf(strArr[icounter]));
pointer.right=rightnode;
nodeque.add(rightnode);
}
icounter++;
}
return head;
}
}
}
四、刷题链接
神秘森林的二叉树_牛客题霸_牛客网