【发布时间】:2013-11-23 23:25:48
【问题描述】:
我们应该如何构造以下“前缀”顺序表达式的二叉树?
( - * / 8 + 5 1 4 + 3 - 5 / 18 6 ) 4
伪代码是这样的:
public ExpressionRootNode MakeBinaryTree(expr):
element = next element in expr
if element is a number:
return a leaf node of that number
else: // element is an operator
left = MakeBinaryTree(expr)
right = MakeBinaryTree(expr)
return a binary tree with subtrees left and right and with operator element
//^aka return root
但是,我不太明白如何递归调用该函数来创建所述树。 我已尝试查看 如何 Create a binary tree from an algebraic expression,但无法弄清楚如何回溯到另一个节点。
项目文件:http://pastebin.com/BJiPtDM5,一团糟。
【问题讨论】:
-
退货怎么样?并非所有方法都必须是
void你知道的。 -
编辑伪代码以从 void -> ExpressionRootNode 更改
-
好!你有操作,左子树和右子树。创建相应的 Tree 实例到底有什么问题?
-
函数不需要用它的父根调用自己吗?它如何知道谁在左边,谁在右边? this.left 和 this.right 会起作用吗?
标签: java recursion binary-tree