日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[leetcode] 根据String数组构造TreeNode,用于LeetCode树结构相关的测试用例

發布時間:2024/1/17 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [leetcode] 根据String数组构造TreeNode,用于LeetCode树结构相关的测试用例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

LeetCode 跟樹結構相關的題目的測試用例中大多是通過String數組來構造樹。例如{2,#,3,#,4,#,5,#,6},可以構造出如下的樹(將樹結構逆時針選擇90度顯示):

?? ??? ??? ???? 6
?? ??? ??? ?5
?? ??? ?4
?? ?3
2

很直觀地可以理解,輸入的String數組是對樹結構進行“層序”遍歷得到的結果。以下代碼用于構造樹結構,并提供printTree用于打印樹結構。

?

package util;import java.util.LinkedList; import java.util.Queue;public class util {public static class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int x) {val = x;}}/** construct TreeNode from a array format string, for test cases of LeetCode*/public static TreeNode createTree(String tree) {// {1,2,3,4,#,#,#,5,#,6,#,7,#,8}String[] ss = tree.split(",");return createTree(ss);}public static TreeNode createTree(String[] tree) {Queue<TreeNode> q = new LinkedList<TreeNode>();// 1st one should not be #TreeNode root = constructOne(tree[0]);q.add(root);int idx = 1;while (!q.isEmpty()) {TreeNode tn = q.poll();if (tn == null) {continue;}// construct tn's left&right node// when to stopif (idx == tree.length) {break;}TreeNode left_ = constructOne(tree[idx]);tn.left = left_;q.add(left_);idx++;if (idx == tree.length) {break;}TreeNode right_ = constructOne(tree[idx]);idx++;tn.right = right_;// add to queueq.add(right_);}return root;}private static void printNode(TreeNode tn, int indent) {StringBuilder sb = new StringBuilder();for (int i = 0; i < indent; i++) {sb.append("\t");}sb.append(tn.val);System.out.println(sb.toString());}public static void printTree(TreeNode root, int indent) {if (root == null) {return;} // if (root.left == null && root.right == null) { // printNode(root, indent); // }// rightprintTree(root.right, indent + 1);// selfprintNode(root, indent);// leftprintTree(root.left, indent + 1);}public static void printTree(TreeNode root) {// right firstprintTree(root, 0);}private static TreeNode constructOne(String s) {if (s.compareTo("#") == 0) {return null;} else {return new TreeNode(Integer.parseInt(s));}}public static void main(String args[]) {TreeNode tn = createTree("2,#,3,#,4,#,5,#,6");printTree(tn);} }

?

轉載于:https://www.cnblogs.com/luweiseu/p/3143331.html

總結

以上是生活随笔為你收集整理的[leetcode] 根据String数组构造TreeNode,用于LeetCode树结构相关的测试用例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。