[leetcode] 根据String数组构造TreeNode,用于LeetCode树结构相关的测试用例
生活随笔
收集整理的這篇文章主要介紹了
[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树结构相关的测试用例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dbcp的销毁
- 下一篇: iOS中安全结束 子线程 的方法