相对于增查改,二叉树的删除是较为复杂的,必须保证删除后所有节点大于其左节点,小于其右节点。
删除节点分为几种情况:
1.删除的节点为叶子节点:直接删除。
2.删除的节点只存在左子树或右子树:删除节点的父节点直接指向子树节点。
3.删除的节点同时存在左子树和右子树:将删除节点的左子树的最右节点或右子树的最左节点替换删除节点,同时删除替换节点,再将删除节点指向子树节点。
示例分析:
1.删除的节点为叶子节点:直接删除。
删除叶子节点62,直接将60的右子树置空即可。
2.删除的节点只存在左子树或右子树:删除节点的父节点直接指向子树节点。
删除60节点,将50节点直接指向60节点的子节点。