删除节点
删除某个节点,如果非叶子节点,则将其下对应的子树均删除,纯属暴力删除,代码如下:
java
/**
* 删除节点, 如果该节点有子树的话, 将子树一起删除
*/
public void deleteById(Integer id) {
if (Objects.isNull(id)) {
System.out.println("id为空, 无需处理");
return;
}
PersonNode left = this.getLeft();
if (Objects.nonNull(left)) {
if (id.equals(left.getData().getId())) {
this.setLeft(null);
} else {
this.getLeft().deleteById(id);
}
}
PersonNode right = this.getRight();
if (Objects.nonNull(right)) {
if (id.equals(right.getData().getId())) {
this.setRight(null);
} else {
this.getRight().deleteById(id);
}
}
}