为什么称为“ showTree”的此功能正常工作?

问题描述

这是我不了解的功能

void showTree (node ​​* tree,int cont) {
    if (tree == NULL) {
        return;
    }
    else {
        showTree (tree-> right,cont + 1);
        for (int i = 0; i <cont; i ++) {
          cout << " ";
        }
        cout << tree-> data << endl;
        showTree (tree-> left,cont + 1);
    }
}

我不明白:

如果有人可以向我解释此功能的工作原理,我将不胜感激。

解决方法

如果始终以递归方式调用该函数,该如何进入for循环?

如果tree == NULL,该函数将立即返回,因此它可能会继续进入for循环。

如果始终以递归方式调用该函数,树状项目将如何显示?

输出由for循环和下一条语句产生,因此推理相同。