【发布时间】:2019-12-28 08:36:25
【问题描述】:
我正在尝试删除二叉树最右边的节点。我正在使用一个函数来找到最右边的节点,它正确地返回了二叉树的最右边的节点,然后我分配了空值。但是当我打印二叉树时,最右边的节点的值被打印出来了。请帮助我理解为什么会这样。
void deleteNode(Node root, int Key)
{
Node rightMost = rightmost(root); // returns the right most node
rightMost = null
}
如果我要删除从父节点到最右边子节点的链接,则该节点将被删除,但当我将节点本身设为空时不会。这很令人困惑,因为如果节点本身为空,那么它应该被删除。
【问题讨论】:
-
欢迎。这是什么语言?在大多数语言中,仅将
null分配给变量只会取消设置引用,不会删除任何内容。 -
我用java写了这段代码
-
遍历右节点,直到你发现该节点为空,然后确保你的树是第一个你迭代的不是你从
rightmost得到的那个 -
如果我从函数返回同一个最右边的节点并将其分配为空,那么为什么它没有发生。最后是同一个节点。
-
请发帖minimal reproducible example显示问题
标签: java binary-tree