updated tree deletion method
Still not complete but will occasionally delete correctly, seems to have more issues with items near the top of the tree
This commit is contained in:
parent
4b45f5d561
commit
e5b0d1659b
@ -100,9 +100,10 @@ namespace C_.Datastructures.BinaryTree
|
|||||||
if (node.Value!.CompareTo(parent!.Value) < 0)
|
if (node.Value!.CompareTo(parent!.Value) < 0)
|
||||||
{//Item being deleted is the left child
|
{//Item being deleted is the left child
|
||||||
parent.Left = default;
|
parent.Left = default;
|
||||||
|
}else{
|
||||||
|
//Item being deleted is the right value
|
||||||
|
parent.Right = default;
|
||||||
}
|
}
|
||||||
//Item being deleted is the right value
|
|
||||||
parent.Right = default;
|
|
||||||
}
|
}
|
||||||
Count--;
|
Count--;
|
||||||
return true;
|
return true;
|
||||||
@ -214,6 +215,14 @@ namespace C_.Datastructures.BinaryTree
|
|||||||
return current;
|
return current;
|
||||||
}
|
}
|
||||||
return node;
|
return node;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ReplaceChild(TreeNode<T> parent, TreeNode<T>? replacement){
|
||||||
|
if (parent.Value!.CompareTo(replacement!.Value) < 0)
|
||||||
|
{//Append to left side
|
||||||
|
parent.Left = replacement;
|
||||||
|
}//Append to right side
|
||||||
|
parent.Right = replacement;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -112,17 +112,16 @@ Console.WriteLine("Hello, World!");
|
|||||||
|
|
||||||
Tree<int> tree = new Tree<int>();
|
Tree<int> tree = new Tree<int>();
|
||||||
|
|
||||||
tree.Add(4);
|
|
||||||
tree.Add(5);
|
tree.Add(5);
|
||||||
tree.Add(7);
|
tree.Add(4);
|
||||||
tree.Add(6);
|
|
||||||
tree.Add(2);
|
|
||||||
tree.Add(3);
|
tree.Add(3);
|
||||||
|
tree.Add(2);
|
||||||
tree.Add(1);
|
tree.Add(1);
|
||||||
tree.Add(8);
|
tree.Add(0);
|
||||||
tree.Add(7);
|
|
||||||
|
|
||||||
var x = tree.Delete(1);
|
|
||||||
|
var x = tree.Delete(3);
|
||||||
|
//tree.Delete(5);
|
||||||
|
|
||||||
var l = tree.Inorder(null);
|
var l = tree.Inorder(null);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user