java - 计算表示算术表达式的二叉树的非递归方法

标签 java algorithm binary-tree

正如主题所述,我需要描述一种在不使用递归的情况下评估二元算术表达式树的方法。没有向我提供其他详细信息或说明。

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

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

最佳答案

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

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

关于java - 计算表示算术表达式的二叉树的非递归方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15043710/

相关文章:

java - 如何只遍历一棵树就得到一棵树?

binary-tree - 广度优先搜索遍历 VS 前序遍历 VS 深度优先搜索遍历

java - 如何将一个类调用到另一个具有不同参数的类中?

java - 在 Vaadin 中的多个用户/ session /UI 之间共享一组只读表数据

python - 将一次取 m 个点的所有可能组合分组为 r 个组

algorithm - 如何在以二叉树形式实现的有序字典中查找所有具有键 k 的元素

java - OpenGL ES、onDrawFrame 性能

java - 如何从 NETTY 4 中的 post 请求中获取文件数据?

algorithm - 高效的短语匹配算法

c++ - 2 位输入的表达式树