对于左侧子树 - 右侧兄弟树有以下插入方法 - 似乎在该方法的专用版本中再次调用addpage
的行上导致StackOverflowError
。任何人都可以帮助建议如何修复它?对不起,如果之前已经问过。带二叉树的StackOverflowError
public PageNode addPage(String PageName)
{
PageNode ParentNode=new PageNode();
ParentNode.page=currentPage.page;
if (this.homePage==null)
this.homePage=ParentNode.parent;
else
ParentNode=this.addPage(PageName,ParentNode.parent);
return ParentNode;
}
private PageNode addPage(String PageName, PageNode ParentNode)
{
ParentNode = new PageNode();
ParentNode.page=new Page(PageName);
if (this.currentPage.page.compareTo(ParentNode.page)==0)
{
System.out.println("attempt to insert a duplicate");
}
else
if (ParentNode.page.compareTo(currentPage.page)<0)
if(currentPage.firstchild == null)
currentPage.firstchild=ParentNode;
else
ParentNode = addPage(PageName, ParentNode.firstchild);
else if(currentPage.nextsibling == null)
currentPage.nextsibling=ParentNode;
else
ParentNode = addPage(PageName, ParentNode.nextsibling);
return ParentNode;
}
考虑修复代码格式;如果/ else没有'{}'也会导致细微的难以辨认的错误,特别是。当嵌套像那样。 (如果代码难以阅读,我会停下来看一个问题)。顺便说一下,“查看”导致堆栈溢出的最简单方法是查看每次调用的传递情况以及它如何适应调用堆栈。使用调试器(或那些基本的'println')。 – 2011-05-22 21:27:52
这应该是什么语言?考虑适当标记。 – 2011-05-22 21:37:25