数组转成链表
class TreeNode {
constructor(val) {
this.val = val;
this.left = null;
this.right = null;
}
}
function arrayToTree(arr) {
function toNode(item) {//转换数组项至节点
if (item === null || item === undefined) { return null }
else { return new TreeNode(item) }
}
let queue = [];
const tree = toNode(arr.shift());
queue.push(tree);//入队列第一个元素
while (arr.length > 0) {
//当数组里还有项的时候就拿数组的项去填充队列
let current = queue.shift();
current.left = toNode(arr.shift());
current.right = toNode(arr.shift());
if (current.left) { queue.push(current.left) }
if (current.right) { queue.push(current.right) }
}
return tree;
}
// var arr = [3, 9, 20, null, null, 15, 7]
// var arr = [5, 4, 8, 11, null, 13, 4, 7, 2, null, null, null, 1];
// var arr = [3, 1, 4, null, 2]
var arr = [5, 3, 6, 2, 4, null, null, 1]
var data = new arrayToTree(arr)
console.log('data', data);
发表回复