Выводить нулевые братья и сестры из несбалансированного двоичного дерева при обходе в порядке уровней - PullRequest
0 голосов
/ 21 апреля 2020

Возможно, дубликат или нечетный вопрос, но я нигде не смог найти ответ:

Я хочу распечатать путь в порядке поиска в ширину несбалансированного двоичного дерева 1004 * с нулевыми братьями и сестрами. Мой код работает, и я пытался улучшить его, но я немного застрял. Мне просто интересно, есть ли более умный способ сделать это вместо нескольких проверок.

function traverse(tree) {
    const path = [];
    let queue = [tree];
    while (queue.length > 0) {
        const current = queue.shift();

        if (current !== null) path.push(current.val);
        else {
            path.push(null);
            continue;
        }

        if (current.left === null && current.right === null) continue;
        else if (current.left !== null && current.right === null) {
            queue.push(current.left);
            queue.push(null);
        }
        else if (current.left === null && current.right !== null) {
            queue.push(null);
            queue.push(current.right);
        }
        else {
            queue.push(current.left);
            queue.push(current.right);
        }
    }
    return path;
}

1 Ответ

1 голос
/ 21 апреля 2020

Только не делай чеков? Следующий код должен быть эквивалентен тому, что вы делаете:

if (current.left === null && current.right === null)
    continue;
else {
    queue.push(current.left);
    queue.push(current.right);
}

Он толкает значение null, когда дочерний элемент равен null, и иначе возвращает значение свойства.

...