题目描述:输入[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);
//
// }
}
}
本文介绍了如何使用层序遍历算法实现给定字符串形式的二叉树构造,以输入[3, null, 15, 7, 2, null, 8, 9]为例,展示了如何创建并展示其层次结构。
6538

被折叠的 条评论
为什么被折叠?



