本人在观看清华大学邓俊晖《数据结构》的网课时,在二叉搜索树中一章的代码不理解。
个人理解:二叉搜索树对于删除节点只有一个分支的时候。若删除节点有左孩,则左/右child与被删除节点做替换,之后释放删除节点。
问题:为什么第succ=x =x->rChiid 或succ=x =x->1Child可以对删除节点的右child/左child进行替换。这不是一个覆盖操作吗?以及这个BinNodePosi(T)w的作用。
本人在观看清华大学邓俊晖《数据结构》的网课时,在二叉搜索树中一章的代码不理解。
个人理解:二叉搜索树对于删除节点只有一个分支的时候。若删除节点有左孩,则左/右child与被删除节点做替换,之后释放删除节点。
问题:为什么第succ=x =x->rChiid 或succ=x =x->1Child可以对删除节点的右child/左child进行替换。这不是一个覆盖操作吗?以及这个BinNodePosi(T)w的作用。
w
用来保存实际被删除结点的指针succ
用来保存替换被删除结点的指针succ=x =x->rChiid
或succ=x =x->1Child
,这里x是被覆盖了,但是没关系,因为w保存了x的值,最后删除结点时用的是w里的值