【LeetCode】TreeNode类实现解析(java实现)
生活随笔
收集整理的這篇文章主要介紹了
【LeetCode】TreeNode类实现解析(java实现)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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实现)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 龙之谷刺客加点
- 下一篇: 数组和集合的相互转换