LeetCode中自测试数组转树工具

 public static TreeNode TreeList()
    {

        System.out.println("输入数据:");
        Scanner scanner=new Scanner(System.in);
        String inputStr=scanner.nextLine();
        //去除[,]
        //replcement替换品
        inputStr=inputStr.replace("[","").replace("]","");
        //分割
        if(inputStr.length()==0)
        {
            throw new RuntimeException("List数组为空");
//            return null;

        }
        List<TreeNode>treeNodes=new ArrayList<>();
        List<String>list= Arrays.asList(inputStr.split(","));
        //遍历
        for(String str:list)
        {
            if(str.equals("null"))
            {
                treeNodes.add(null);
                continue;
            }
            if(str.equals(""))
            {
                continue;
            }
            int val=Integer.parseInt(str);
            treeNodes.add(new TreeNode(val));
        }
        //将节点数组的长度填补到最接近的2^n-1的值
        int oldLen=treeNodes.size();
        int n=1;
        while((Math.pow(2,n)-1)<treeNodes.size())
        {
            n++;
        }
        for(int start=treeNodes.size();start<=Math.pow(2,n)-1;start++)
        {
            treeNodes.add(null);
        }
        for(int i=0;i<oldLen/2;i++)
        {
            if(treeNodes.get(i)!=null)
            {
                treeNodes.get(i).left=treeNodes.get(2*i+1);
                treeNodes.get(i).right=treeNodes.get(2*i+2);
            }
        }
        return treeNodes.get(0);
    }

测试数据并不完善可能存在问题,仅供参考

你可能感兴趣的:(leetcode,java,算法)