2019独角兽企业重金招聘Python工程师标准>>>

在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

【LeetCode】TreeNode类实现解析(java实现)相关推荐

  1. java treenode类详解_【LeetCode】TreeNode类实现解析(java实现)

    在LeetCode中,TreeNode是经常用到的一个结构体,表示数据结构树(Tree)中的一个节点.其官方定义如下: public class TreeNode { int val; TreeNod ...

  2. Java中的ListNode和TreeNode类

    目 录 ListNode类 TreeNode类 参考:Java中的ListNode和TreeNode类 这是2个需要自定义的类,链表和二叉树. ListNode类 public class ListN ...

  3. java method field_java_解析Java中的Field类和Method类,Field类 Field类中定义了一些方 - phpStudy...

    解析Java中的Field类和Method类 Field类Field类中定义了一些方法,可以用来查询字段的类型以及设置或读取字段的值.将这些方法与继承而来的member方法结合在一起.就可以使我们能够 ...

  4. 解析 Java 类和对象的初始化过程

    跳转到主要内容 中国 [ 选择 ] dW 全部内容--------------  AIX and UNIX  Info Mgmt  Lotus  Rational  WebSphere-------- ...

  5. JVM学习笔记(Ⅰ):Class类文件结构解析(带你读懂Java字节码,这一篇就够了)

    JVM学习笔记(Ⅰ):Class类文件结构解析,带你读懂Java字节码 前言:本文属于博主个人的学习笔记,博主也是小白.如果有不对的地方希望各位帮忙指出.本文主要还是我的学习总结,因为网上的一些知识分 ...

  6. Java常用类全面解析(含部分源码)

    常用类 文章目录 常用类 字符串相关的类 String 类 说明 案例 String 的实例方式 String 中的常用方法 案例一 案例二 案例三 String 类与其它结构之间的转换 小复习-与基 ...

  7. LeetCode——113 路径总和 II(JAVA)

    给你二叉树的根节点 root和一个整数目标和 targetSum,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径. 叶子节点 是指没有子节点的节点. 示例 1: 输入:root = [5, ...

  8. INI文件快速解析java工具包

    FastIni 概述 相信大家都用过阿里的fastjson,它可以通过模板快速解析json字符串,也可以通过key快速获取json字符串中的值.通过模板类型快速解析json字符串是一个很好的想法,所以 ...

  9. 深入解析Java AtomicInteger 原子类型

    深入解析Java AtomicInteger原子类型 在进行并发编程的时候我们需要确保程序在被多个线程并发访问时可以得到正确的结果,也就是实现线程安全.线程安全的定义如下: 当多个线程访问某个类时,不 ...

最新文章

  1. win10 uwp 按下等待按钮
  2. 国人主导研发的 HAWQ® 成 Apache® 顶级项目
  3. 让JTextField添加“自动完成”功能
  4. 不连续曲线 highcharts_无人车运动规划中常用的方法:多项式曲线
  5. Linux第三周作业
  6. 简单SQL的增、删、改、查语句
  7. DS1302时钟模块通信原理(SPI总线)
  8. 赛尔号通信数据的逆向分析与还原(思路篇)
  9. html网页模板如何修改,如何修改和管理网站模板
  10. android 百度地图的经度纬度问题
  11. AGV控制器的国产化之路
  12. 为什么amd显卡便宜却买的人少_这7张显卡现在最好不要买,千万不要花钱当冤大头...
  13. 大学计算机实验报告答案 南京理工大学,南京理工大学微机实验报告
  14. MySQL备库复制延迟的原因及解决办法
  15. 鸿蒙生态箐英班,华为联合西北工业大学开设 “鸿蒙生态菁英班”: 50 人左右,锁定终端软件领域...
  16. Elasticsearch之高亮进阶-高性能高亮器, 让Elasticsearch飞一会儿
  17. 如何知晓代理IP所属城市?
  18. 《中华人民共和国消防法》(2021年修订版)解读
  19. 内网架设FTP服务器(serv-u)
  20. 家长们,不要跟青春期较劲

热门文章

  1. Linux下安装G++
  2. html5 canvas 画的简易时钟
  3. linux 双机直连设置
  4. Go语言 命令行解析(二)
  5. 加载checkpoint问题
  6. Appium+python自动化(十五)- Android 这些基础知识,你知多少???(超详解)...
  7. C++跨平台开发方法/工具
  8. git关联远程仓库和删除远程仓库
  9. Power BI新主页将使内容的导航和发现变得轻而易举!
  10. Mongodb基本操作说明