我只是想知道如何使用while循环遍历二叉树(不是递归完成的)。
我有我的树:
typedef struct Node *BSTree;
typedef struct Node {
int key;
BSTree left, right;
} Node;
我只想知道如何在一个while循环中访问每个节点。有人能给我看看吗?我不能把我的头裹住。
最佳答案
您需要有对父节点的引用。
如果是根!=当前中的存储根为空。
如果当前有左子项,则将当前设置为左子项。
如果当前没有左子项并且有右子项存储右子项。
如果当前中没有当前节点的左右子存储父级。
如果你这样做的话,你将以无休止的循环结束,但是如果你把一个存储在当前节点之前,并且比较当前节点和最后一个节点之间的关系,你就可以遍历整个树。
这不是完整的答案,但会有帮助。
关于c - 如何使用while循环遍历二叉树?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52833271/