【发布时间】:2023-03-14 01:25:01
【问题描述】:
我有一个 AVL 树。每个节点如下所示:
typedef struct {
Node *parent; // the parent node
Node *left; // the node left of this node
Node *right; // the node right of this node
int height; // the height of this node
void *value; // payload
} Node;
是否可以在 O(1) 空间中迭代具有这些节点的 AVL 树,无需递归,如果可以,如何?
如果没有,也可以使用具有 sub-O(n) 空间或当且仅当需要 O(N) 空间的解决方案。
通过遍历树我的意思是我想访问每个节点一次,如果可能的话,按顺序(从最左边到最右边的节点)。
【问题讨论】:
-
家庭作业,对吧?你试过什么?
-
@Jim Balter:我希望不是家庭作业。我今年 17 岁,还在上高中(或者至少是荷兰语版本)。它用于 Python 项目,并用于迭代器中。
-
您希望以何种方式“迭代 AVL 树”?
-
@Gumbo:糟糕,忘记在问题中说了。我想访问每个节点一次,如果可能的话,按顺序(从最左边到最右边的节点)。
-
再一次,你有什么尝试?当然,您至少可以找到通往第一个(最左边)节点的路……弄清楚下一步该做什么。
标签: c algorithm data-structures