问题给出了层序遍历序列,我们使用队列来实现二叉树的构造过程:
这里注意:在写代码时,比较字符串数组内元素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
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
"#")){ - TreeNode leftnode=new TreeNode(Integer.valueOf(strArr[icounter]));
- pointer.left=leftnode;
- nodeque.add(leftnode);
- }
- icounter++;
- if(icounter
"#")){ - TreeNode rightnode=new TreeNode(Integer.valueOf(strArr[icounter]));
- pointer.right=rightnode;
- nodeque.add(rightnode);
- }
- icounter++;
- }
- return head;
- }
- }
- }