如被删结点是根结点又分以下两种情况:
第二种情况:被删结点有左子树,则用被删结点的左子结点作为根结点,并把被
删结点的右子树作为被删结点的左子树按中序遍历的最后一个结点的右子树:
我是这样理解的:由BST性质可知r->rchild>root>l->lchild,删除根结点后,左子树
变为根结点,原根结点右子树作为左子树按中序遍历的最后一个结点的右子树,
也就是说原根结点的右子树插到原根结点的左子树某个结点的右子树上上,
而此结点原来在根结点的右子树上,故应大于现在的新根结点,而现在插入到
新根结点的左子树上,由BST性质可知左子树上的所有结点都小于根结点,那删除后
二叉排序树的性质不就不成立了吗?请教
呵呵,看不明白你怎么想的,画张图,很好理解的
5
/ \
2 8
/ \ / \
1 4 6 10
/
3
删除根
2 8
/ \ / \
1 4 6 10
/
3
原左子作为根,其中序遍历的最后一个节点是4,
2
/ \
1 4
/
3
把原来的右子树作为 4 的右子树
2
/ \
1 4
/ \
3 8
/ \
6 10
完成!