我想從使用c#的二叉樹中刪除一個節點。這個例子只在節點沒有子節點時才起作用。我理解的缺失如何與孩子,但我越來越掛了,似乎我的問題是從一個缺乏C#的認識:將對象的設置引用爲null似乎不起作用
public class Tree
{
internal class Node
{
public int Val { get; set; }
public Node Left { get; set; }
public Node Right { get; set; }
public Node(int val)
{
Val = val;
}
}
private Node root;
public void Delete(int val)
{
Node current = this.root;
Node parent = null;
while (true) {
if (val < current.Val) {
parent = current;
current = current.Left;
}
else if (val > current.Val) {
parent = current;
current = current.Right;
}
else if (val == current.Val) {
current = null;
return;
}
}
}
}
我的問題是在該行,我設定的電流= null。我打算使用它的方式是使用current = null來刪除當前節點。但它不起作用。如果我引用當前節點從父:
parent.Right = null;
節點正確刪除,但顯然是一種痛苦,因爲我需要檢查,如果當前節點是正確的或節點的左子。我錯過了什麼?提前致謝!
我建立了一些東西,'但它不起作用。'你能幫我解決嗎?閱讀http://stackoverflow.com/questions/25715034/binary-search-tree-c-sharp-delete-node-function –
這種情況是[ref返回和本地人](https:// github.com/dotnet/roslyn/issues/118) –