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
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.
rb-tree/dist/rbtree.js
Line 231 in 1d6cd8a
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:
Can you look into this and confirm if the implementation still works for all cases.
Thanks