add: 二叉树的层序遍历 II
This commit is contained in:
parent
7ff3a150b7
commit
8f84fc8c66
@ -359,11 +359,16 @@ LeetCode 与 LintCode 解题记录。此为个人练习仓库,代码中对重
|
|||||||
- LeetCode 572. 另一个树的子树 <https://leetcode-cn.com/problems/subtree-of-another-tree/>
|
- LeetCode 572. 另一个树的子树 <https://leetcode-cn.com/problems/subtree-of-another-tree/>
|
||||||
- LintCode 1165. 另一个树的子树 <https://www.lintcode.com/problem/subtree-of-another-tree/description>
|
- LintCode 1165. 另一个树的子树 <https://www.lintcode.com/problem/subtree-of-another-tree/description>
|
||||||
|
|
||||||
- [二叉树的层序遍历](src/tree/binary-tree-right-side-view.js)
|
- [二叉树的层序遍历](src/tree/binary-tree-level-order-traversal.js)
|
||||||
|
|
||||||
- LeetCode 102. 二叉树的层序遍历 <https://leetcode-cn.com/problems/binary-tree-level-order-traversal/>
|
- LeetCode 102. 二叉树的层序遍历 <https://leetcode-cn.com/problems/binary-tree-level-order-traversal/>
|
||||||
- LintCode 69. 二叉树的层次遍历 <https://www.lintcode.com/problem/binary-tree-level-order-traversal/description>
|
- LintCode 69. 二叉树的层次遍历 <https://www.lintcode.com/problem/binary-tree-level-order-traversal/description>
|
||||||
|
|
||||||
|
- [二叉树的层次遍历 II](src/tree/binary-tree-level-order-traversal-ii.js)
|
||||||
|
|
||||||
|
- LeetCode 107. 二叉树的层次遍历 II <https://leetcode-cn.com/problems/binary-tree-level-order-traversal-ii/>
|
||||||
|
- LintCode 70. 二叉树的层次遍历 II <https://www.lintcode.com/problem/binary-tree-level-order-traversal-ii/description>
|
||||||
|
|
||||||
## 链表
|
## 链表
|
||||||
|
|
||||||
- [合并K个排序链表](src/list/merge-k-sorted-lists.js)
|
- [合并K个排序链表](src/list/merge-k-sorted-lists.js)
|
||||||
|
28
src/tree/binary-tree-level-order-traversal-ii.js
Normal file
28
src/tree/binary-tree-level-order-traversal-ii.js
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
/**
|
||||||
|
* Definition for a binary tree node.
|
||||||
|
* function TreeNode(val) {
|
||||||
|
* this.val = val;
|
||||||
|
* this.left = this.right = null;
|
||||||
|
* }
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* @param {TreeNode} root
|
||||||
|
* @return {number[][]}
|
||||||
|
*/
|
||||||
|
export const levelOrder = function (root) {
|
||||||
|
const res = []
|
||||||
|
const queue = [root]
|
||||||
|
while (queue.length) { // BFS
|
||||||
|
const tmp = []
|
||||||
|
const leave = queue.length // 记录这一层有几个
|
||||||
|
for (let i = 0; i < leave; i++) { // 一次性把固定个数的队列执行完
|
||||||
|
const node = queue.shift()
|
||||||
|
if (node && node.left) queue.push(node.left)
|
||||||
|
if (node && node.right) queue.push(node.right)
|
||||||
|
if (node) tmp.push(node.val)
|
||||||
|
}
|
||||||
|
if (tmp.length) res.unshift(tmp)
|
||||||
|
}
|
||||||
|
|
||||||
|
return res
|
||||||
|
}
|
14
test/tree/binary-tree-level-order-traversal-ii.test.js
Normal file
14
test/tree/binary-tree-level-order-traversal-ii.test.js
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
import { levelOrder } from '../../src/tree/binary-tree-level-order-traversal-ii'
|
||||||
|
import Tree from './Tree.js'
|
||||||
|
|
||||||
|
test('二叉树的层序遍历 II', () => {
|
||||||
|
const source = [3, 9, 20, null, null, 15, 7]
|
||||||
|
expect(levelOrder(Tree.arrToTree(source))).toEqual([
|
||||||
|
[15, 7],
|
||||||
|
[9, 20],
|
||||||
|
[3]
|
||||||
|
])
|
||||||
|
|
||||||
|
const source1 = []
|
||||||
|
expect(levelOrder(Tree.arrToTree(source1))).toEqual([])
|
||||||
|
})
|
Loading…
Reference in New Issue
Block a user