Там нет петли. k
- это глобальная переменная, к которой можно получить доступ в Reconstruct(T)
. Это просто текущий индекс массива символов (входная строка).
Как объяснено в вопросе, на который вы ссылались ( Contsruct Tree с предварительным обходом ), правильный алгоритм - сделать левого потомка узла, а затем правого потомка. Что вы видите в true
разделе if
. Если текущий узел оказался листом L
, то не давайте ему потомков и возвращайтесь к вызывающей функции.
То, что делает эта функция, следует за левым краем дерева, добавляя дочерние элементы ко всем узлам N
и не добавляя дочерние элементы ко всем узлам L
(иначе листья), пока строка не завершится.
Редактировать: когда автор псевдокода говорит T.left = T.right = null
, это означает, что в данный момент текущий узел не имеет левого или правого дочернего элемента (потому что это лист). Это всего лишь утверждение, и оно не обязательно должно быть в коде.