在刷leetcode 很多树题目的时候经常遇到这种情况,
For example:
Given BST [1,null,2,2],
1
\
2
/
2
发现测试的例子给的是一个数组 然而 需要输入的结果是一个树形结构每次手动的去创建比较麻烦,写了一个数组到树的一个小工具
由于其中有null 的情况所以用的是装箱类,实现过程也比较简单,就是先创建根节点然后在创建左右子树,在创建左右子树的时候依次的把左右子树加入到一个队列,如果为空就跳过,每次从队列中取出一个节点依次的把左右子树加入到一个队列 这样一直遍历下去直到把数组遍历完了。下面给出代码
import java.util.Deque;
import java.util.LinkedList;
public class GenerateTreeNode {
public static TreeNode generateTreeNode(Integer[] nums) {
if(nums==null||nums.length==0)
return null;
int len=nums.length;
int index=0;
TreeNode head=new TreeNode(nums[index]);
Deque<TreeNode> nodeQueue = new LinkedList<>();
nodeQueue.offer(head);
TreeNode cur;
while (index<len){
index++;
if (index>=len)return head;
cur=nodeQueue.poll();
Integer left=nums[index];
if (left!=null){
cur.left=new TreeNode(left);
nodeQueue.offer(cur.left);
}
index++;
if (index>=len)return head;
Integer right=nums[index];
if (right!=null){
cur.right=new TreeNode(right);
nodeQueue.offer(cur.right);
}
}
return head;
}
public static void main(String[] args) {
Integer[] data={1,null,2,2,32,31,3,23,1,23,123,12,3,12,31,23,2};
TreeNode node= GenerateTreeNode.generateTreeNode(data);
System.out.println();
}
}