Skip to content

Null dereference TypeError in deleteFixup #1

@mahee96

Description

@mahee96

I am learning RBTree delete impl and was wondering whether easy and concise code impl was available anywhere. Stumbled upon this repo and thought to give it a try but I see this doesn't cover all test cases and has some bugs. See the below line reference.

if (w.left.color === BLACK && w.right.color === BLACK) {

I just merged the files such as colors, types node etc into single file called rbtree.ts so the stacktrace line numbers might be off. Still the referenced line above is the actual point of failure.

stacktrace:
Exception has occurred: TypeError: Cannot read property 'color' of null
at Tree.deleteFixup (....vscode\ts\dist\rbtree.js:205:28)
at Tree.deleteSubtree (....vscode\ts\dist\rbtree.js:191:18)
at Tree.remove (....vscode\ts\dist\rbtree.js:161:21)
at Object. (....vscode\ts\dist\rbtree.js:424:7)
at Module._compile (node:internal/modules/cjs/loader:1108:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1137:10)
at Module.load (node:internal/modules/cjs/loader:988:32)
at Function.Module._load (node:internal/modules/cjs/loader:828:14)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:76:12)
at node:internal/main/run_main_module:17:47

Test Driver code:

let t = new Tree()
for(let i=0; i<10; i++)
  t.insert(i, i)
for(let i=0; i<10; i++)
  t.remove(i)
console.log(t.values())

Can you look into this and confirm if the implementation still works for all cases.
Thanks

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions