二叉排序树的生成与删除节点演示

问题描述: 已知一组关键字序列为:(10, 30, 5, 20, 40, 25),按照依次插入结点的方法生成一棵二叉排序树。

(1) 画出该二叉排序树(不要求画出构造过程);

(2) 画出从(1)所得树中删除关键字为'30'的结点之后的二叉排序树。

(1) 二叉排序树的构造过程如下:

首先将10插入根结点,得到如下树:

    10
   /  \
NULL  NULL

然后将30插入根结点的右子树,得到如下树:

    10
   /  \
NULL   30
       / \
     NULL NULL

接着将5插入根结点的左子树,得到如下树:

    10
   /  \
 5     30
 /     / \
NULL NULL NULL

然后将20插入根结点的左子树的右子树,得到如下树:

    10
   /  \
 5     30
      / \
     20 NULL
         / \
       NULL NULL

接着将40插入根结点的右子树的右子树,得到如下树:

    10
   /  \
 5     30
      / \
     20  40
         / \
       NULL NULL

最后将25插入根结点的右子树的右子树的左子树,得到如下树:

    10
   /  \
 5     30
      / \
     20  40
         / \
        25 NULL
            / \
          NULL NULL

因此,该二叉排序树为:

       10
      /  \
     5    30
         /  \
        20   40
            /
           25

(2) 从(1)所得树中删除关键字为'30'的结点之后的二叉排序树为:

首先找到要删除的结点30,由于该结点有两个子结点,因此需要找到其右子树中的最小结点,即25。然后将25的值替换到30中,再删除25即可。

删除25后,得到如下树:

       10
      /  \
     5    30
         /  \
        20   40

因此,删除关键字为'30'后的二叉排序树为:

       10
      /  \
     5    40
         /
        20   
二叉排序树的生成与删除节点演示

原文地址: https://www.cveoy.top/t/topic/nTHk 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录