Leetcode 数组生成二叉树的工具

12 篇文章 0 订阅

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值