2014-10-18 2 views
-2

Я изучаю двоичное дерево, и я пытаюсь понять, почему Node left снова вызывает class Node.Binary Tree Node Ссылка на класс

Например:

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

Почему NodeNode вызова и почему это не Int Node.

+0

'Узел' не вызывает« Узел ». Это только полевые декларации. Экземпляр класса «Node» просто имеет ссылку на левый и правый «Node», которые в свою очередь являются экземплярами класса «Node» – Robin

ответ

1

Бинарное дерево - это просто структура, содержащая от 0 до 2 ссылок на один и тот же тип связанного объекта. Например, это плохо обращаются диаграмма:

10 
/\ 
1 5 
    /\ 
    3 6 

10 является Node с:

  • left ссылается на Node с value 1.
  • right ссылкой на Node с value 5.

Другие узлы аналогичны.

1

Поля left и right просто могут содержать ссылки на другие экземпляры Node. Они не называются классами, а просто полями с типизированным типом.

С такой установкой, вы можете создать бинарное дерево, так как теперь каждый Node может содержать значение - int data - и ссылку на корневой узел левого поддерева - Node left - и ссылку на корень узел правого поддерева - Node right.

+0

, что означает ссылка на корневой узел? – fscore

+0

Извините. Если вы не знаете эти термины, вы должны пойти и прочитать начальные учебные пособия. – Seelenvirtuose

+0

Как я уже сказал, я новичок, так что вы можете указать мне ссылку? – fscore

2

Это не звонит, это member declaration и те поля, если бы это было просто int node мы не имеем каких-либо ссылок на Чайлдс узла, поэтому мы должны иметь поля типа node и из-за это бинарное дерево, мы должны иметь left child и right childs.

+0

Это не звонит ?? Что ты имеешь в виду? – fscore

+0

Вы не вызываете поле класса, это просто объявление, в родительском узле у вас есть дочерний узел, поэтому вы можете найти дочерний узел. предположим, что узел a имеет два дочерних a и b, как вы могли бы знать, что если a где просто целое число? вы должны иметь дочерний узел в родительском узле, чтобы это знать. Это все. – Lrrr