Skip to content

获取指定层级的所有节点

递归

javascript
function getNodesByLevel(root, level) {
  const result = [];
  function helper(root, level) {
    if (root === null) {
      return;
    }
    if (level === 1) {
      result.push(root.val);
    } else if (level > 1) {
      helper(root.left, level - 1);
      helper(root.right, level - 1);
    }
  }
  helper(root, level);
  return result;
}

Test Cases

javascript
const { getNodesByLevel } = require('../docs/algo/tree/getNodesByLevel');
const { generateTree } = require('../docs/algo/common/generator');

describe('getNodeByLevel', () => {
  it('Empty tree', () => {
    expect(getNodesByLevel(null)).toEqual([]);
  });
  it('Is not empty tree', () => {
    const root = generateTree();
    expect(getNodesByLevel(root, 2)).toEqual([2, 3]);
  });
});
shell
# /test/getNodesByLevel.test.js
jest --testNamePattern=getNodesByLevel