aureooms/js-skip-list

View on GitHub
src/predecessorOnPreviousLevel.js

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
import assert from 'assert';

import Node from './Node.js';

const predecessorOnPreviousLevel = (node) => {
    assert(node !== null);

    while (node.up === null) {
        if (node.left === null) {
            const newNode = new Node(undefined, node); // Top-most left-most sentinel
            node.up = newNode;
            return newNode;
        }

        node = node.left;
    }

    return node.up;
};

export default predecessorOnPreviousLevel;