treenode解析实现说明

图标

豆瓜

豆瓜网

豆瓜网专栏

首发
豆瓜 图标 2020-10-17 00:34:42

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

public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
1
2
3
4
5
6
  在Tree的题目中,常会给出一些测试用例,用一些特定的格式来表示一棵树,如[3,9,20,null,null,15,7]就表示如下的一棵树:

3
/ \
9 20
/ \
15 7
1
2
3
4
5
  因此,我扩展了一下这个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];
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
  使用以上代码时,只需要使用该代码建立一个项目,再将其链接到你的工作代码中即可。调用静态函数mkTree即可把官方给出的Tree的格式转换为一棵树,非常简单,如下:String str = "[3,9,20,null,null,15,7]";

TreeNode node = TreeNode.mkTree(str);

What Doesn't Kill Me Makes Me Stronger


本文由豆瓜网专栏作家 豆瓜 投稿发布,并经过豆瓜网编辑审核。

转载此文章须经作者同意,并附上出处(豆瓜网)及本页链接。

若稿件文字、图片、视频等内容侵犯了您的权益,请联系本站进行 投诉处理

相关搜索

treenode
图标 图标

豆瓜

豆瓜网

豆瓜网专栏

  • treenode解析实现说明

    图标
    豆瓜 图标 · 今天 00:34:42 · 0浏览
  • eofexception异常问题说明

    图标
    豆瓜 图标 · 今天 00:33:55 · 10浏览
  • manifest.mf文件之详解

    图标
    豆瓜 图标 · 今天 00:30:47 · 3浏览
  • 全部评论

    豆瓜

    豆瓜网

    豆瓜网专栏

  • treenode解析实现说明
  • eofexception异常问题说明
  • manifest.mf文件之详解
  • sql 触发器全面详解
  • rbf神经网络之详解
  • 我来说两句