Leetcode 数组生成二叉树的工具

在刷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();
    }
}

发布了213 篇原创文章 · 获赞 35 · 访问量 85万+

猜你喜欢

转载自blog.csdn.net/u012957549/article/details/105501036