可以说我给这个方法提供了这个字符串列表:[*,+,8,4, - ,7,/,6,3]。 及其与下面的方法不正确的结构是:在java中创建二进制表达式树
|-- *
|-- +
|-- 8
|-- 4
|-- 8
我知道此时的方法炸毁。当左右两边最终都是数字时,它就会从前一次递归中输入新节点。
我该如何避免这种情况,并将它添加到对方的节点中,而不是再次输入newnode?
public ExpressionTreeNode createExpressionTree(List<String> listofstrings)
{
ExpressionTreeNode newnode = new ExpressionTreeNode(listofstrings.get(0));
if(!newnode.isanumber(newnode))
{
if(root == null)
{
root = newnode;
}
listofstrings = removefirst(listofstrings);
newnode.left = createExpressionTree(listofstrings);
listofstrings = removefirst(listofstrings);
newnode.right =createExpressionTree(listofstrings);
//listofstrings = removefirst(listofstrings);
}
return newnode; // should only be number leaves
}
你有6个(几乎相同)的问题,但你没有把任何人花时间帮助你。 - 因为你永远不会显示你的'ExpressionTreeNode',我恐怕你今晚也不会得到一个好的答案。 – Ingo
因为我的声望很低,所以我无法上任何一个。该节点只是一个带有String数据的标准二进制节点,节点向左,向右; – jakeinmn
如果您从未[*接受*](http://stackoverflow.com/help/accepted-answer)答案,您的声誉将保持低水平。 – Holger