力扣会给出构造树的字符串,数组存储值,类似层序遍历,Java生成树为:
/**
* leetcode 给出树的字符串 生成树
* @param rootStr
* @return
*/
public TreeNode buildTreeNodeFromLevelString(String rootStr) {
TreeNode root = new TreeNode(0);
if (rootStr != null) {
rootStr = rootStr.trim();
rootStr = rootStr.substring(1,rootStr.length()-1);
System.out.println(rootStr);
String[] nodeStrs = rootStr.split(",");
root.val = Integer.valueOf(nodeStrs[0]);
LinkedList<TreeNode> queue = new LinkedList<>();
queue.offer(root);
int index = 1;
while (!queue.isEmpty()) {
int levelSize = queue.size();
for (int i = 0; i < levelSize; i++) {
TreeNode node = queue.poll();
if (index >= nodeStrs.length) {
return root;
}
System.out.println("deal "+ node.val + ", left: " + nodeStrs[index] + ", index = " + index);
if ("null".equals( nodeStrs[index])) {
node.left = null;
} else {
node.left = new TreeNode(Integer.valueOf(nodeStrs[index]));
queue.offer(node.left);
System.out.println("add left "+ nodeStrs[index]);
}
index++;
if (index >= nodeStrs.length) {
return root;
}
System.out.println("deal "+ node.val + ", right: " + nodeStrs[index] + ", index = " + index);
if ("null".equals( nodeStrs[index])) {
node.right = null;
} else {
node.right = new TreeNode(Integer.valueOf(nodeStrs[index]));
queue.offer(node.right);
System.out.println("add right "+ nodeStrs[index]);
}
index++;
}
}
}
return root;
}