簡體   English   中英

從二叉搜索樹中刪除根后會是什么?

[英]What will be the root after deleting it from a binary search tree?

我正在看這個問題:

bst 的一個問題

解決方案是否將成為節點 23,因為我們將首先應用左右旋轉,然后進行刪除?

從二叉搜索樹中刪除節點有不同的算法。

一種如下:

  • 如果節點是葉子,則將其刪除並停止
  • 如果該節點有一個孩子,則用其孩子替換該節點並停止
  • 如果節點有兩個孩子:
    • 找到節點的前任(它在它的左子樹中)
    • 在原始節點中復制前任的值
    • 通過應用上面的前兩個步驟之一刪除前任節點。

給定的樹有一個有兩個孩子的根,所以我們首先找到它的前任節點,即值為 23 的節點。然后該節點(它的值)被移動到根節點,取而代之的是值為 19 的節點:

           50                    23
         /    \                /    \
       17      72      =>    17      72
     /   \    /  \          /  \    /  \
   12    23  54  76       12   19  54  76
  /  \   /               /  \
 9   14 19              9   14

生成的樹仍然是平衡的,所以這里沒有發生旋轉。 此外,要應用的旋轉類型可能取決於實現哪種類型的自平衡二叉搜索樹:AVL、Splay 樹、紅黑樹是此類樹的示例,它們將在不同條件下和樹中的不同位置旋轉.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM