用Java删除二叉搜索树中的节点

问题描述

我尝试使用此方法来递归删除节点,但不知何故它说 myRoot 将始终为空。你能告诉我怎么做吗?

import matplotlib.lines as mlines

eight = mlines.Line2D([],[],color='blue',marker='s',ls='',label='8')
nine = mlines.Line2D([],marker='D',label='9')
# etc etc
plt.legend(handles=[eight,nine])

注意:- 此代码删除一个孩子或没有孩子的节点。我目前正在删除一个有 2 个孩子的节点,所以请不要为我解决这个问题。

解决方法

根据对该问题的评论,您询问的是来自您的 IDE 的风格推荐,具体涉及:

    if (myRoot == null) return myRoot;

您的 IDE 意味着当执行该特定 return 语句时,myRoot 始终为 null。很明显是这样,因为 if 确保不执行 return。您的 IDE 建议您将其更改为

    if (myRoot == null) return null;

是否这样做取决于您,但就我个人而言,我会接受您的 IDE 的建议,因为它使代码更清晰一些。