Open Genzhen opened 3 years ago
bfs(value) {
const result = []
let level = 0
const stack = [value]
while (stack.length > 0) {
const levelSize = stack.length
for (let i = 0; i < levelSize; i++) {
const node = stack.shift()
if (level === result.length) {
result.push(node.val)
}
if (node.right) {
stack.push(node.right)
}
if (node.left) {
stack.push(node.left)
}
}
level++
}
return result
}
let value = {
val: '1',
left: {
val: '2',
left: {
val: '7'
},
right: {
val: '3'
}
},
right: {
val: '4',
left: {
val: '3'
}
}
}
console.log(bfs(value)) // [1,4,3]
const rightView = (root) => {
const queue = [root]
const res = []
while (queue.length) {
let len = queue.length
while (len--) {
const node = queue.shift()
if (!len) {
res.push(node.val)
}
if (node.left) {
queue.push(node.left)
}
if (node.right) {
queue.push(node.right)
}
}
}
return res
}
扫描下方二维码,收藏关注,及时获取答案以及详细解析,同时可解锁800+道前端面试题。
代码实现
题目的思路很明显,对二叉树进行层序遍历,然后取得每一层的最后一个节点。放到一个数组里最后返回。