问. 构建二叉搜索树并执行删除和中序遍历程序。

2025年3月17日 | 阅读 14 分钟

说明

在此程序中,我们需要创建一个二叉搜索树,从树中删除一个节点,并通过中序遍历遍历树来显示树中的节点。在中序遍历中,对于给定的节点,我们首先遍历左子节点,然后是根节点,最后是右子节点(左 -> 根 -> 右)

Program to construct a Binary Search Tree and perform deletion and inorder traversal

二叉搜索树中,所有位于根节点左侧的节点都小于根节点,而位于右侧的节点都大于根节点。

插入

  1. 如果新节点的值小于根节点,则将其插入到左子树中。
  2. 如果新节点的值大于根节点,则将其插入到右子树中。

删除

  1. 如果要删除的节点是叶子节点,则该节点的父节点将指向 null。例如,如果我们删除 90,则父节点 70 将指向 null。
  2. 如果要删除的节点只有一个子节点,则该子节点将成为父节点的子节点。例如,如果我们删除 30,则作为 30 左子节点的 10 将成为 50 的左子节点。
  3. 如果要删除的节点有两个子节点,则我们找到当前节点右子树中值最小的节点(minNode)。当前节点将被其后继节点(minNode)替换。

算法

  1. 定义一个 Node 类,它有三个属性:data、leftright。其中,left 表示节点的左子节点,right 表示节点的右子节点。
  2. 创建节点时,数据将传递到节点的 data 属性,left 和 right 都将设置为 null
  3. 定义另一个类,该类有一个 root 属性。
    1. Root 表示树的根节点,并将其初始化为 null。
  4. insert() 函数将新值插入二叉搜索树。
    1. 它会检查根节点是否为 null,这意味着树是空的。新节点将成为树的根节点。
    2. 如果树不为空,则将新节点的值与根节点进行比较。如果新节点的值大于根节点,则将新节点插入到右子树中。否则,将其插入到左子树中。
  5. deleteNode() 函数将从树中删除特定节点。
    1. 如果要删除的节点值小于根节点,则在左子树中搜索节点。否则,在右子树中搜索节点。
    2. 如果找到节点并且它没有子节点,则将该节点设置为 null。
    3. 如果节点只有一个子节点,则该子节点将取代该节点的位置。
    4. 如果节点有两个子节点,则找到其右子树中的最小值的节点。这个最小值的节点将替换当前节点。

解决方案

Python

输出

Binary search tree after insertion:
10 30 50 60 70 90 
Binary search tree after deleting node 90:
10 30 50 60 70 
Binary search tree after deleting node 30:
10 50 60 70 
Binary search tree after deleting node 50:
10 60 70 

C

输出

Binary search tree after insertion:
10 30 50 60 70 90 
Binary search tree after deleting node 90:
10 30 50 60 70 
Binary search tree after deleting node 30:
10 50 60 70 
Binary search tree after deleting node 50:
10 60 70

JAVA

输出

Binary search tree after insertion:
10 30 50 60 70 90 
Binary search tree after deleting node 90:
10 30 50 60 70 
Binary search tree after deleting node 30:
10 50 60 70 
Binary search tree after deleting node 50:
10 60 70 

C#

输出

Binary search tree after insertion:
10 30 50 60 70 90 
Binary search tree after deleting node 90:
10 30 50 60 70 
Binary search tree after deleting node 30:
10 50 60 70 
Binary search tree after deleting node 50:
10 60 70 

PHP

输出

Binary search tree after insertion:
10 30 50 60 70 90 
Binary search tree after deleting node 90:
10 30 50 60 70 
Binary search tree after deleting node 30:
10 50 60 70 
Binary search tree after deleting node 50:
10 60 70 
 
下一个主题程序列表