再次向大家问好,
我被指派打印我的二叉树,我们应该把头转向左边,从侧面看它——当我提供一个图像时,这是有意义的。
我不知道我的insert方法还是showtree方法是错的。
以下是我的插入方法:
public void insert(Keyed item)
{
_root = insert(_root, item);
}
private TNode insert (TNode myRoot,Keyed item)
{
if(myRoot == null)
{
TNode newNode = new TNode();
newNode.data = item;
newNode.left = null;
newNode.right = null;
return newNode;
}
int comp = item.KeyComp(myRoot.data);
if(comp < 0)
{
myRoot.left = insert(myRoot.left, item);
}
else if (comp > 0)
{
myRoot.right = insert(myRoot.right, item);
}
return myRoot;
}
下面是我的showtree方法:
public void showTree()
{
showTree(_root,1);
}
private void showTree(TNode myRoot,int myLevel)
{
if(myRoot == null)
{
return;
}
for(int i = 0; i < myLevel; i++)
{
System.out.print("\t");
}
showTree(myRoot.right, myLevel + 1);
System.out.println(myRoot.data.toStr());
showTree(myRoot.left, myLevel + 1);
}
如果有任何其他方法需要帮助-我可以提交它,但我真的不知道我的insert方法是否做得不正确,或者我的showtree方法是否没有正确地隔开我的二叉树。
我非常感谢你的帮助!
谢谢!
1条答案
按热度按时间qmelpv7a1#
在打印当前节点的缩进之前,请尝试打印右侧节点。像这样:
我也认为你应该从0级开始打电话
showTree(_root,0);
我个人认为,如果你把缩进合并成一个字符串,然后打印出来,会更容易阅读。像这样:如果你有Java11,你甚至可以使用它
currentNodeIdentation = "\t".repeat(myLevel)
.