0
Я пытаюсь реализовать Уровень заказ обходе BTУровень заказ Обход с #
class Node
{
public int data;
public Node left;
public Node right;
public Node(int data)
{
this.data = data;
right = null;
left = null;
}
}
unsafe class BinaryTree
{
Node root;
public BinaryTree()
{
root = null;
}
public void display(Node level)
{
Node current = level;
if (current.left != null)
{
display(current.left);
}
Console.WriteLine(current.data);
if(current.right!=null)
{
display(current.right);
}
}
Queue<int> qu = new Queue<int>();
public void LevelOrderTraversal()
{
}
public void insert(int num)
{
Node newnode = new Node(num);
Node currentNode;
if(root==null)
{
root = newnode;
}
else
{
currentNode=root;
while(true)
{
Node tmpParent = currentNode;
if(newnode.data<=currentNode.data)
{
currentNode = currentNode.left;
if (currentNode == null)
{ tmpParent.left = newnode; return; }
}
else if(newnode.data>currentNode.data)
{
currentNode = currentNode.right;
if (currentNode == null)
{ tmpParent.right = newnode; return; }
}
}
}
}
static void Main(string[] args)
{
BinaryTree bTree = new BinaryTree();
bTree.root = new Node(50);
bTree.root.left = new Node(25);
bTree.root.right = new Node(75);
bTree.insert(22);
bTree.insert(78);
bTree.LevelOrderTraversal(&bTree.root); //Problem occurs here
Console.WriteLine(bTree.root);
Console.ReadLine();
}
}
Я пытаюсь передать адрес корневого узла, так что я могу добавить его в очередь, но я не уверен, как передать адрес корня и зафиксировать его в функции. Он говорит, что адрес can not принимает адрес управляемого типа. Любая помощь приветствуется. Спасибо
Почему вы пытаетесь использовать указатели в первую очередь? Почему бы не сохранить все это? –
'unsafe' и небезопасная ссылка (' & ') здесь совершенно не нужны ... –