3

正如主题所述,我需要描述一种在不使用递归的情况下评估二叉算术表达式树的方法。没有其他细节或指示给我。

就我对这些事情的理解而言,我需要模拟树的中序遍历。假设我的教科书中概述的 ADT 方法的可用性,我有hasLeft()hasRight()left()right()isInternal()isExternal()方法。我需要问我的教授我是否可以自己制作这样的方法,但是没有可用的parent()方法,所以我可以遍历树。不过,我确实有root()方法。

有人可以指出我正确的方向来弄清楚如何做到这一点吗?我想不出没有递归的方法,因为我没有办法立即跳回树上。

4

1 回答 1

7

您可以保留一堆已经访问过的节点。然后通过将一个新节点推入堆栈来替换递归调用,并从堆栈中弹出一个递归函数将返回的节点。

请记住,在执行递归函数时,总会有一个隐式堆栈来记住每个函数调用中传递了哪些参数。

于 2013-02-23T18:04:29.907 回答