刷题的时候经常会遇到二叉树的题,题目中给定的一般都是数组形式,可以在线调试。
但是在本地编译器的话,需要转为二叉树形式才能进行代码调试。
1、给定数组
var root = [3,9,20,null,null,15,7];
2、定义【树节点】类
function TreeNode(val, level) {
this.val = val;
this.left = null;
this.right = null;
}
3、构造二叉树
function buildTree(val_list) {
// 数组为空
if(!val_list || val_list.length === 0)
return ;
// 根节点
var root = new TreeNode(val_list.shift());
var nodeQueue = [root];
// 对root节点进行操作,更新node
while(val_list.length > 0){
var node = nodeQueue.shift();
// n = node.level + 1; // 获取父节点的层级,子节点在该层级上+1
// 构建:左孩子节点
if(val_list.length === 0)
break;
var leftVal = val_list.shift();
if(leftVal) {
node.left = new TreeNode(leftVal);
nodeQueue.push(node.left);
}
// 构建:右孩子节点
if(val_list.length === 0)
break;
var rightVal = val_list.shift();
if(rightVal) {
node.right = new TreeNode(rightVal);
nodeQueue.push(node.right);
}
}
return root;
}
4、调用
let tree = buildTree(root);
console.log(tree)
结果: