博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【LeetCode】TreeNode类实现解析(java实现)
阅读量:6200 次
发布时间:2019-06-21

本文共 1989 字,大约阅读时间需要 6 分钟。

hot3.png

在LeetCode中,TreeNode是经常用到的一个结构体,表示数据结构树(Tree)中的一个节点。其官方定义如下:

public class TreeNode {    int val;    TreeNode left;    TreeNode right;    TreeNode(int x) { val = x; }}

  在Tree的题目中,常会给出一些测试用例,用一些特定的格式来表示一棵树,如[3,9,20,null,null,15,7]就表示如下的一棵树:

3   / \  9  20    /  \   15   7

  因此,我扩展了一下这个TreeNode的一些实现,使其可以通过官方给出的格式方便的构建出一棵树,从而使得我们在自己写玩代码后能很方便地调试。

package MakeLeetCodeClass;public class TreeNode {    public int val;    public TreeNode left;    public TreeNode right;    TreeNode(int x) { val = x; }    public String toString(){        return Integer.toString(val);    }//    int []arr = {3, 9, 20, Integer.MAX_VALUE, Integer.MAX_VALUE, 15, 7};    private static int[] StrToIntArray(String str) {        str = str.substring(1, str.length() - 1);        String []strs = str.split(",");        int []arr = new int[strs.length];                for (int i = 0; i < arr.length; i++) {            if (strs[i].equals("null")) {                arr[i] = Integer.MAX_VALUE;            } else {                arr[i] = Integer.parseInt(strs[i]);            }        }                return arr;    }    //    String str = "[3,9,20,null,null,15,7]";    public static TreeNode mkTree(String str) {                int []arr = StrToIntArray(str);        TreeNode []nodes = new TreeNode[arr.length + 1];        for (int i = 1; i < nodes.length; i++) {            if (arr[i - 1] != Integer.MAX_VALUE) {                nodes[i] = new TreeNode(arr[i - 1]);            }else {                nodes[i] = null;            }        }                TreeNode node = null;        for (int i = 1; i < nodes.length / 2; i++) {            node = nodes[i];            if (node == null) continue;            node.left = nodes[2 * i];            node.right = nodes[2 * i + 1];        }        return nodes[1];    }}

  使用以上代码时,只需要使用该代码建立一个项目,再将其链接到你的工作代码中即可。调用静态函数mkTree即可把官方给出的Tree的格式转换为一棵树,非常简单,如下:

String str = "[3,9,20,null,null,15,7]";	TreeNode node = TreeNode.mkTree(str);

转载于:https://my.oschina.net/styshoo/blog/758921

你可能感兴趣的文章
Ubuntu 12.04安装VMware Workstation8.0.3
查看>>
java非web应用修改 properties/xml配置文件后,无需重启应用即可生效---自动加载
查看>>
【Luogu】P3930 SAC E#1 - 一道大水题 Knight
查看>>
Nginx配置(需要把nginx的根目录指向ftp上传文件的目录。)
查看>>
leetcode 64: Count and Say
查看>>
CF878D D. Magic Breeding bitset
查看>>
head里一些meta配置
查看>>
php面向对象
查看>>
ASP.NET Core 中读取 Request.Body 的正确姿势
查看>>
HTML5语音合成Speech Synthesis API简介
查看>>
javaScript日期的应用
查看>>
直流电与交流电的几点区别
查看>>
HTML的基础
查看>>
java.sql.Connection解决插入数据库中文乱码问题
查看>>
java机器学习工具包
查看>>
2018 Multi-University Training Contest 3 - Ascending Rating
查看>>
批量生成测试非重复命名的图片数据
查看>>
【caffe I/O】数据读取层 代码中文注释
查看>>
JSF 2 outputText example
查看>>
QT中采用信号槽机制实现两个label切换图片的关联
查看>>