Двоичные деревья - псевдокоды? - PullRequest
0 голосов
/ 23 марта 2011

Я пытаюсь написать этот псевдокод для проверки, основана ли структура данных на деревьях. является двоичным деревом.

У меня небольшая проблема с пониманием этой формы псевдокода.

Вот что я написал:

Is-Binary(x)    
  if (x=null) {Then Return True
            }
       else {
            if (x.Right<>Null) {Then
                if (x.key<x.right.key){Then
                   Is-Binary(x.Right)}
                else {Return False}}

            if (x.Left<>Null) {Then
               if (x.key>x.Left.key){Then
                  Is-binart(x.Left)}
               else {Return False}}
             }

Мой вопрос: могу ли я предположить, что после того, как будет принято первое значение true, программа не завершит работу?

Что означает возврат здесь? будет ли он суммировать все истинное / ложное и дать окончательное суулоцию (основываясь на том факте, что истина * ложь = ложь?)

Если так, что еще я могу сделать?

Спасибо

1 Ответ

0 голосов
/ 24 марта 2011

Вы получите только один результат, истинный или ложный, потому что вы ничего не накапливаете.Предполагая, что вы начинаете с вершины дерева, допустим, что вы углубились только на один уровень, в результате вы получите только истину или ложь.Затем, если вы получаете еще один уровень глубже (с другим вызовом), вы просто сталкиваетесь с теми же возможностями: True, false или более глубоко в дереве.

[Редактировать, после дальнейшего наблюдения:] Если я не 'ошибаюсь, вы получите True в первый раз, когда вы нажмете ноль, что может никогда не произойти, потому что вы никогда не вызываете Is-Binary с нулевым значением.

Так что, если X равен нулю, вы получаете true, иначе выложь.

...