2013-04-03 5 views
2

Привет, я все еще изучаю C# и пытаюсь создать алгоритм двоичного обхода дерева для целей обучения. Я сделал то же самое на Java, и мне удалось заставить его работать. Мне нужно знать, могу ли я дать метод аа параметр Node.This является то, что я до сих пор:Обход двоичного дерева

public class Node<T> 
{ 
     public Node<T> Left { get; set; } 
     public Node<T> Right { get; set; } 
     public T Data { get; set; } 
} 



public static void InOrder(Node<T> n) 
     { 
     } 

проблема заключается в параметре заказовМои он говорит мне, что я не могу передать параметр узла, поскольку он не может разрешить SYMBOLE T. В Java я использовал этот синтаксис, чтобы заставить его работать Node n, но кажется, что синтаксис отличается в C#.

Если это так, то как я могу использовать мой текущий класс Node как тип?

ответ

2

Поместите статический метод внутри класса Node<T>, и он будет работать. Вне класса, он понятия не имеет, что означает T.

+0

Это только один из нескольких возможных вариантов. Разумеется, этот метод можно получить вне класса, создав метод или любой класс, в котором он находится, общий. – Servy

2

Вам необходимо добавить <T> к имени метода, так как оно находится вне класса Node.

public static void InOrder<T>(List<T> n) 
{ 
} 
1

Вы должны были бы тип T на ваш метод, как это:

public class Node<T> 
{ 
    public Node<T> Left { get; set; } 
    public Node<T> Right { get; set; } 
    public T Data { get; set; } 
} 

public static void InOrder<T>(Node<T> n) 
{ 
} 
Смежные вопросы