【Java】字符串转二叉树,一个方便的java类
简介
力扣的核心代码模式在面对本题这类二叉树问题时,本地调试就十分折磨。写了一个TreeMaker类,可实现将力扣的层序遍历的二叉树字符串转化成二叉树数据结构。分享给大家。
二叉树节点,比里扣的多了个空构造方法
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
public TreeNode() {
}
}
TreeMaker类
public class TreeMaker {
public TreeNode retree(String s){
String rs = s.substring(1,s.length()-1);
String[] valarr = rs.split(",");
int len = valarr.length;
int i = 0;
TreeNode head = new TreeNode(renumber(valarr[i]));
Deque<TreeNode> deque = new LinkedList<>();
deque.addLast(head);
i++;
while (i<len){
TreeNode root = deque.pollFirst();
if(i<len&&!"null".equals(valarr[i])){
root.left = new TreeNode(renumber(valarr[i]));
deque.addLast(root.left);
}
i++;
if(i<len&&!"null".equals(valarr[i])){
root.right = new TreeNode(renumber(valarr[i]));
deque.addLast(root.right);
}
i++;
}
return head;
}
private int renumber(String s){
char[] arr = s.toCharArray();
int res = 0;
for(int i = 0;i<arr.length;i++){
res = res*10+(int)(arr[i]-0);
}
return res;
}
}
用例
TreeMaker treeMaker = new TreeMaker();
treeMaker.retree("[5,1,4,null,null,3,6]");
