做力扣上的题的时候经常遇到二叉树相关的问题,但是在本地想要调试的话就必须通过题目提供的数组构造出等价的树,这里提供一个构造二叉树的方法:
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) {
val = x;
}
/**
* 调用以构造二叉树,BFS
* @param vals 数组
* @return
*/
public static TreeNode InitTree(Integer[] vals) {
TreeNode root = new TreeNode(vals[0]);
Queue<TreeNode> queue = new LinkedList<>();
int cur = 1;
queue.offer(root);
while (queue != null) {
TreeNode r = queue.poll();
if (vals[cur] == null) {
r.left=null;
} else {
r.left = new TreeNode(vals[cur]);
queue.offer(r.left);
}
if (++cur >= vals.length) {
break;
}
if (vals[cur] == null) {
r.right = null;
} else {
r.right = new TreeNode(vals[cur]);
queue.offer(r.right);
}
if (++cur >= vals.length) {
break;
}
}
return root;
}
public static void main(String[] args) {
//测试
InitTree(new Integer[]{3, 5, 1, 6, 2, 0, 8, null, null, 7, 4});
}
}