java - How do I test my delete method in a BST -
so in binary search tree, i'm trying test delete method see if removes node bst. problem test keeps saying didn't work. here's how i'm testing delete method
message = "test 3: deleting 'word' -- "; t = new bstrefbased(); try { t.delete("word"); result = t.getrootitem().getword().equals(null); } catch (exception e) { result = false; } system.out.println(message + (result ? "passed" : "failed")); here's delete method:
public void delete(string word) { root = deleteitem(root, word); } protected treenode deleteitem(treenode r, string word) { if (r == null){ return r; } if(word.compareto(r.item.getword()) < 0){ return r; } else if (word.compareto(r.item.getword()) > 0) { return r; } else if(r.left != null && r.right != null) { return deleteitem(r, word); } else { return r; } return r; } so why keep saying delete method failed in output? problem test code or actual method? did insert word 'word' in bst should there. here's pseudo code version of want delete method do:
delete(treenode ,searchitem) targetnode = search(treenode ,searchitem) if targetnode null return p = parent node of target node if targetnode has no children update ref in p leads targetnode return if targetnode has 1 child c update ref in p leads targetnode overwriting ref c (either left- or right-ref in p) return m = targetnode's inorder successor (i.e., left-most in-order successor in targetnode's right subtree) m = item in m copy m targetnode's item field delete (treenode, m) return
assuming code bst written correctly, explain me how deleting node? when @ code, call deleteitem(root, word) doesn't @ all. regardless of happens, return root, applied root.
Comments
Post a Comment