需求
根据二叉树的层次遍历的序列结果,创建二叉树
eg:[‘a’,’b’,’c’,’d’,’#’,’#’,’e’,’#’,’f’,’#’,’#’,’#’,’#’];
思路
对于层次遍历,可以采用队列来解决
先将数组中的头元素入队
当队列不为空时
输出队头元素
将与对头元素相关的节点入队
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| function TreeNode(val){ this.val = val; this.left = null; this.right = null; } function createTree_levelorder(arr){ let rootval = arr.shift(); let queue = []; if(rootval){ let root = new TreeNode(rootval); queue.push(root); while(queue.length){ let head = queue.shift(); let left = arr.shift(); let right = arr.shift(); if(left!=='#'){ let leftnode = new TreeNode(left); queue.push(leftnode); head.left = leftnode; } if(right!=='#'){ let rightnode = new TreeNode(right); queue.push(rightnode); head.right = rightnode; } } return root; } } let arr = ['a','b','c','d','#','#','e','#','f','#','#','#','#']; console.log(createTree_levelorder(arr));
|