【发布时间】:2021-11-26 09:14:38
【问题描述】:
如果我检查 children 是否包含 childToRemove,为什么我需要另一个 else 来检查孩子是否在 this.children 中?
public void removeChild(TreeNode childToRemove)
{
if(this.children.isEmpty())
{
return ;
}
else if(this.children.contains(childToRemove))
{
this.children.remove(childToRemove);
return;
}
else
{
for(TreeNode child : this.children)
{
child.removeChild(childToRemove);
}
}
}
【问题讨论】:
-
children的类型是什么?如果是ArrayList,则不需要这样做。 -
因为这个方法是递归删除...这意味着即使它不是直接的孩子,而是孩子的孩子也应该被删除...第一个分支(isEmpty)处理没有孩子的小事。第二个(children.contains)照顾直接孩子......而最后的“else”分支递归地照顾间接孩子(孩子的孩子......)。
-
@Renato,谢谢你帮助我理解。
-
没问题。 @mario 你被否决了,因为你的问题缺乏上下文......比如:这段代码来自哪里,周围的类是什么,你为什么需要知道这个,
children的类型是什么等等......能够正确回答我们需要知道所有这些。例如,我不得不猜测children是List<TreeNode>,并且围绕此方法的类也是TreeNode类型。但如果这些假设是错误的,我的解释就会不正确。 -
请将此问题移至parenting.stackexchange.com(对不起,我无法抗拒)。 :D
标签: java data-structures