我只是想知道如何使用while循环遍历二叉树(不是递归完成的)。
我有我的树:

typedef struct Node *BSTree;
typedef struct Node {
   int  key;
   BSTree left, right;
} Node;

我只想知道如何在一个while循环中访问每个节点。有人能给我看看吗?我不能把我的头裹住。

最佳答案

您需要有对父节点的引用。
如果是根!=当前中的存储根为空。
如果当前有左子项,则将当前设置为左子项。
如果当前没有左子项并且有右子项存储右子项。
如果当前中没有当前节点的左右子存储父级。
如果你这样做的话,你将以无休止的循环结束,但是如果你把一个存储在当前节点之前,并且比较当前节点和最后一个节点之间的关系,你就可以遍历整个树。
这不是完整的答案,但会有帮助。

关于c - 如何使用while循环遍历二叉树?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52833271/

10-11 22:36
查看更多