空节点用null表示
例如:[1,2,3,4,null,null,null,null,20,21]
import java.util.*;
public class Main01 {static class TreeNode {int val;TreeNode left;TreeNode right;public TreeNode(int val) {this.val &#61; val;}}public static void main(String[] args) {TreeNode root &#61; stringToTree("[1,2,3,4,,null,null,null,null,20,21]");}public static TreeNode stringToTree(String str){String[] elems &#61; stringToArray(str);if (null &#61;&#61; elems) {return null;}TreeNode root &#61; createTree(elems, 0);return root;}private static TreeNode createTree(String[] arr, int index) {TreeNode tn &#61; null;if (index < arr.length) {if (arr[index].equals("null")) {return null;}Integer val &#61; Integer.valueOf(arr[index]);tn &#61; new TreeNode(val);tn.left &#61; createTree(arr, 2 * index &#43; 1);tn.right &#61; createTree(arr, 2 * index &#43; 2);}return tn;}public static String[] stringToArray(String str){if(null !&#61; str && str.equals("")){return null;}String[] fileds &#61; str.split(",");return fileds;}
}
遍历n叉树
static class TreeNode{public int val;public List<TreeNode> child;public TreeNode() {}public TreeNode(int val) {this.val &#61; val;}public TreeNode(int val, List<TreeNode> child) {this.val &#61; val;this.child &#61; child;}}public static List<List<Integer>> levelOrder(TreeNode root){List<List<Integer>> res &#61; new ArrayList<>();if(root &#61;&#61; null){return res;}Queue<TreeNode> q &#61; new LinkedList<>();q.offer(root);while(!q.isEmpty()){int n &#61; q.size();List<Integer> level &#61; new ArrayList<>();while(n-- > 0){TreeNode node &#61; q.poll();level.add(node.val);for(TreeNode child : node.child){if(child !&#61; null){q.offer(child);}}}res.add(level);}return res;}