我需要做类似于这个问题描述的任务构建的东西树:
Construct tree with pre-order traversal given理解伪代码从序遍历
这里有一个真正有用的答案,但我不完全理解的伪代码,所以我想知道是否有人可以帮我描述一下发生了什么事。
k = 0 // Initialize
input = ... get preorder traversal vector from user ... // Get input
Reconstruct(T) // Reconstruct method with tree input
if input[k] == N // If element of input is N
T = new node with label N // Make a new node with label N in tree T
k = k + 1 // Increment k for next loop (Is this whole thing a loop? or a method call?)
Reconstruct(T.left) // ?????
Reconstruct(T.right) // ?????
else // If element of input is L
T = new node with label L // Make a new node with label L in tree T
T.left = T.right = null // ?????
k = k + 1 // Increment k for next loop
我写我的评论事物的认识,我会很感激,如果有人可以检查我的理解是正确的,什么问号位都在做。另外,这个伪代码是否在输入中遇到L时通过输入和回溯来创建新树?还是重构一个现有的二叉树?
谢谢你的回答。 Reconstruct(T.left)和Reconstruct(T.right)是否再次调用该方法?或者他们是否只是用伪代码写下来,意思是我应该用代码来替换这些代码,这些代码会使节点的左边孩子,然后是正确的孩子? – Jigglypuff 2011-05-04 23:15:12
@Jigglypuff这些调用确实是调用相同的函数。这个算法是递归的。这些行应该像实施中一样进行编码。 – Puddingfox 2011-05-04 23:49:49
谢谢。我非常感谢你的帮助。 – Jigglypuff 2011-05-05 03:21:11