【发布时间】:2017-12-19 01:18:01
【问题描述】:
我正在为树结构(左子指针、右子指针、父指针)编写(有序)迭代器,但我被卡住了,因为当我已经访问过时,我想不出停止迭代的方法所有节点。如何检查我当前所在的节点是否是树的最后一个节点?
编辑
这里的树结构应该是二叉树结构,我需要中序遍历来实现节点“键”的词汇顺序,并且我已经完成了递归版本 - 我正在尝试做迭代版本,因为很多遍历树的其他函数,我不确定如何编写足够通用的递归版本以支持所有用途。
很抱歉,如果我最初的问题不准确,请按您认为合适的方式投反对票。
【问题讨论】:
-
还没弄清楚如何用铅笔和纸确定“最后一个节点”,为什么还要写代码?
-
你知道如何开始迭代了吗?当没有“下一个”节点时停止。所以弄清楚如何找到“下一个”节点。
-
一个简单的方法是检查当前节点是否是树的最右边的孩子,这将是按顺序遍历的最后一个节点。要找到最右边的孩子,只需从根一直到没有正确的孩子。但是当然,如果你确实正确地实现了 FindNextNode 函数,你应该通过检测你是从右孩子返回到 root 还是在 root 之后并且没有右孩子来得出相同的结论。
-
您是否在编写递归代码? read