Java教程

leetcode二叉树问题本地调试 java——Eclipse版

本文主要是介绍leetcode二叉树问题本地调试 java——Eclipse版,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

最近一直在leetcode上刷题,每次在做比较复杂的二叉树问题时,都想先调试再提交,但是在线编辑器并不支持这个功能,于是就想到了在eclipse上自己弄一套二叉树的代码方便调试,这里把我的代码分享给大家,有需要的同学可以按照我的这套方法在自己的编辑器上还原出来。
首先看下项目的结构
这里我把构建二叉树的代码放在了Tree目录下,solutions用于存放我的题解,在题解中调用Tree中的二叉树就可以用来调试了。
首先看下
OK,下面废话不多说,直接放上Tree中每个文件的代码:

首先是TreeNode:这里是用于构造二叉树的对象:

package Tree;

public class TreeNode {
    public int val;
    public TreeNode left;
    public TreeNode right;
    public TreeNode() {}
    public TreeNode(int val) { this.val = val; }
    TreeNode(int val, TreeNode left, TreeNode right) {
        this.val = val;
        this.left = left;
        this.right = right;
    }
}

然后是TreeNodeUtils:这是一个工具类,通过这个工具类可以自动构建二叉树,代码如下:

package Tree;

import java.util.LinkedList;
import java.util.Queue;

public class TreeNodeUtil {
    public static TreeNode arrayToTreeNode(Integer[] array){
        if(array.length == 0){
            return null;
        }
        TreeNode root = new TreeNode(array[0]);
        Queue<TreeNode> queue = new LinkedList<>();
        queue.add(root);
        boolean isLeft = true;
        for(int i = 1; i < array.length; i++){
            TreeNode node = queue.peek();
            if(isLeft){
                if(array[i] != null){
                    node.left = new TreeNode(array[i]);
                    queue.offer(node.left);
                }
                isLeft = false;
            }else {
                if(array[i] != null){
                    node.right = new TreeNode(array[i]);
                    queue.offer(node.right);
                }
                queue.poll();
                isLeft = true;
            }
        }
        return root;
    }
}

ok,至此,二叉树的前期准备工作已经完成,下面来看下如何使用这一工具。

首先我在solutions中创建一个BinaryTreeDemo来作为测试类:
在这里插入图片描述
通过TreeNodeUtils中提供的arrayToTreeNode()方法可以将提供的数组转为二叉树对象。

注意:这里最后生成的二叉树是对输入的数组做层序遍历的结果。
在这里插入图片描述

这里我用一个简单的中序遍历来作为测试,可以看到结果完全正确。大家也可以自行去用于其他问题的调试,完全ojbk。

这篇关于leetcode二叉树问题本地调试 java——Eclipse版的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!