我刚刚了解了二叉树,并尝试创建一个插入方法。我的第一种方法不起作用,我做了一些调整。它现在有效,但我不明白为什么以前的方法失败了。
不起作用的方法是:
if(root == null)
{
root = new Node(data);
}
else if(data < root.getData())
{
insertNode(root.getLeft(), data);
}
else
{
insertNode(root.getRight(), data);
}
有效的方法是:
if(data < root.getData())
{
if(root.getLeft() == null)
{
root.left = new Node(data);
}
else
{
insertNode(root.getLeft(), data);
}
}
else
{
if(root.getRight() == null)
{
root.right = new Node(data);
}
else
{
insertNode(root.getRight(), data);
}
}
关于为什么会这样的任何解释?因为在我看来,root 应该等于 root.left,所以将 root 设置为新节点应该与将 root.left/right 设置为新节点相同。