gpt4 book ai didi

c# - C# 实现中的二叉搜索树

转载 作者:太空狗 更新时间:2023-10-29 21:13:51 26 4
gpt4 key购买 nike

class Node
{
public int data;
public Node left, right;

public Node(int data)
{
this.data = data;
left = null;
right = null;

}
}

class BinaryTreeImp
{
Node root;
static int count = 0;

public BinaryTreeImp()
{
root = null;

}
public Node addNode(int data)
{
Node newNode = new Node(data);

if (root == null)
{
root = newNode;

}
count++;
return newNode;


}

public void insertNode(Node root,Node newNode )
{
Node temp;
temp = root;

if (newNode.data < temp.data)
{
if (temp.left == null)
{
temp.left = newNode;

}

else
{
temp = temp.left;
insertNode(temp,newNode);

}
}
else if (newNode.data > temp.data)
{
if (temp.right == null)
{
temp.right = newNode;

}

else
{
temp = temp.right;
insertNode(temp,newNode);
}
}
}


public void displayTree(Node root)
{
Node temp;
temp = root;

if (temp == null)
return;
displayTree(temp.left);
System.Console.Write(temp.data + " ");
displayTree(temp.right);


}

static void Main(string[] args)
{
BinaryTreeImp btObj = new BinaryTreeImp();
Node iniRoot= btObj.addNode(5);


btObj.insertNode(btObj.root,iniRoot);
btObj.insertNode(btObj.root,btObj.addNode(6));
btObj.insertNode(btObj.root,btObj.addNode(10));
btObj.insertNode(btObj.root,btObj.addNode(2));
btObj.insertNode(btObj.root,btObj.addNode(3));
btObj.displayTree(btObj.root);

System.Console.WriteLine("The sum of nodes are " + count);
Console.ReadLine();

}
}

这是实现代码。代码工作正常,但如果在 displayTree 函数中,我将其替换为

public void displayTree(Node root)
{
Node temp;
temp = root;

while(temp!=null)
{
displayTree(temp.left);
System.Console.Write(temp.data + " ");
displayTree(temp.right);
}

}

造成死循环。我不明白是什么原因造成的。另外我想知道是否有更好的方法在 C# 中实现 BST。

最佳答案

我不确定你为什么需要这个循环,但回答你的问题:

while(temp!=null)
{
displayTree(temp.left);
System.Console.Write(temp.data + " ");
displayTree(temp.right);
}

此代码检查 temp 是否不为 null,但它永远不会变为 null,因为您执行的循环 在温度的叶子上。这就是为什么你有一个无限循环。

关于c# - C# 实现中的二叉搜索树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10366402/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com