【发布时间】:2017-05-08 17:55:13
【问题描述】:
我认为这是一个愚蠢的问题,但很遗憾地说它会清除我的困惑。 如果您只是查看此代码
void printInOrder(){
printPrivateInOrder(root);
}
void printPrivateInOrder(Node* n){
if (root != NULL){
if (n->left != NULL){
printPrivateInOrder(n->left);
}
cout << n->val << " ";
if (n->right != NULL){
printPrivateInOrder(n->right);
}
}
else{
cout << "Tree is Empty\n";
}
}
在这个 Traversal 中,如果我们去到最左的孩子,那么这个函数又是如何被调用的呢?假设只看图片 BST Example 我们已经移动到节点 4,那么如何再次调用这个函数呢?如果两个孩子都是空的,我不会再次调用此函数,而是再次调用此函数并打印 InOrder Traversal 中的所有节点?怎么样?
【问题讨论】:
标签: pointers recursion data-structures binary-search-tree traversal