数据结构课件第8章.ppt

数据结构课件第8章

(2) 若被删除结点有右子树,但没有左子树,则可以用其右子树的根结点取代被删除结点的位置,如图8.23(b)所示;  (3) 若被删除结点有左子树,但没有右子树,则可以用其左子树的根结点取代被删除结点的位置, 如图8.23(c)所示; (4) 若被删除结点的左、右子树均为非空,则要找到被删除结点的右子树中关键码最小的结点(设该结点的位置由t指出),用该结点取代被删除结点的位置, 并在右子树中将t所指的结点删除。由于t是右子树中关键码最小的结点,故它一定是右子树中沿左子树链往下走所得到的最后一个结点,所以没有左子树。因此,用t的右子树来取代t所指结点的位置,如图8.23(d)所示。 图 8.23 在排序二叉树中删除结点r (a) r无儿子; (b) r只有右子树; 图 8.23 在排序二叉树中删除结点r (c) r只有左子树; (d) r左右子树均存在 不难验证,上述各种情况下的删除操作均使原来的排序二叉树保持了性质。设p: Tlink 为指向排序二叉树根结点的指针, item: elemtp为待删除结点的关键码,则在排序二叉树中删除结点的操作可表示为procedure remove(item: elemtp, var p: Tlink), 其功能为在以p所指结点为根的排序二叉树中删除关键码为指定值item的结点,其处理过

文档评论(0)

1亿VIP精品文档

相关文档