gpt4 book ai didi

java - 二叉树 : Why Does One Insert Method Work and the Other Not

转载 作者:行者123 更新时间:2023-11-30 04:13:32 24 4
gpt4 key购买 nike

我刚刚了解了二叉树,并尝试创建一个插入方法。我的第一种方法不起作用,我做了一些调整。现在可以了,但我不明白为什么以前的方法失败了。

无效的方法是:

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 设置为新 Node 应该与将 root.left/right 设置为新 Node 相同。

最佳答案

在第一个方法中,您将 null 赋予 insertNode 方法,但没有引用指针。因此你在insertNode方法中设置root = new Node(),但是父节点不知道这些,它仍然指向null。

由于这是一些非常基本的 Java 理解,我建议阅读一些关于“java 参数传递”的文章,例如http://javadude.com/articles/passbyvalue.htm

关于java - 二叉树 : Why Does One Insert Method Work and the Other Not,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18999658/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com