Java 计算表示算术表达式的二叉树的非递归方法
正如主题所述,我需要描述一种在不使用递归的情况下计算二进制算术表达式树的方法。没有其他细节或指示给我 就我对这些事情的理解而言,我需要模拟树的有序遍历。假设我的教科书中概述的ADT方法可用,我有Java 计算表示算术表达式的二叉树的非递归方法,java,algorithm,binary-tree,Java,Algorithm,Binary Tree,正如主题所述,我需要描述一种在不使用递归的情况下计算二进制算术表达式树的方法。没有其他细节或指示给我 就我对这些事情的理解而言,我需要模拟树的有序遍历。假设我的教科书中概述的ADT方法可用,我有hasleet(),haslright(),left(),right(),isInternal(),和isExternal()方法。我需要问我的教授我是否可以自己创建这样的方法,但是没有parent()方法可以使用,这样我就可以遍历树了。不过,我确实有一个root()方法 有人能给我指出正确的方向来解决这
hasleet()
,haslright()
,left()
,right()
,isInternal()
,和isExternal()
方法。我需要问我的教授我是否可以自己创建这样的方法,但是没有parent()
方法可以使用,这样我就可以遍历树了。不过,我确实有一个root()
方法
有人能给我指出正确的方向来解决这个问题吗?如果没有递归,我想不出一种方法来实现这一点,因为我无法立即跳回到树上。您可以保留一堆已经访问过的节点。然后通过将新节点推入堆栈来替换递归调用,然后从堆栈中弹出一个递归函数将返回的节点
请记住,在执行递归函数时,始终存在一个隐式堆栈,用于记住在每次函数调用中传递的参数。您应该使用堆栈。我能想到的唯一其他方法是继续,但这可能被视为递归,您的老师可能并不期望这样做。