二叉排序樹BST及CRUD操作

xiha00發表於2020-12-28

摘要#

構造一顆二叉排序樹(也叫二叉搜尋樹,BST,Binary Search Tree)十分簡單。一般來講,大於根節點的放在根節點的右子樹上,小於根節點的放在根節點的左子樹上(如果等於根節點,則可視情況而定),如果寫程式的話,可以採用遞迴的方式,而且由於不存在重疊子問題的情況,因此遞迴的效能已經足夠好(不考慮棧溢位的情況)。

二叉排序樹在通常情況下可以達到O(lgN)的靜態、動態操作的時間複雜度,但是存在一種特殊情況,即輸入的資料本身就是有序的,這時二叉排序樹退化成向量。

下面我們系統歸納一下二叉樹的特性,以及相關操作及其程式碼實現。

二叉排序樹#

簡稱BST,也稱為二叉查詢樹。其或是一棵空樹,或是一棵具有下列特性的非空二叉樹:

1)若左子樹非空,則左子樹上所有結點關鍵字值均小於根結點的關鍵字值。

2)若右子樹非空,則右子樹上所有結點關鍵字值均大於根結點的關鍵字值。

3)左、右子樹本身也分別是一棵二叉排序樹。

其是一個遞迴的資料結構。

左子樹結點值 < 根結點值 < 右子樹結點值

對其進行中序遍歷可以得到一個遞增的有序序列。

二叉排序樹

圖1. 二叉排序樹示例圖

CRUD操作#

Create-構造二叉排序樹#

構造一棵二叉排序樹就是依次輸入資料元素,並將它們插入到二叉樹中的適當位置上的過程。

具體過程:

1)每讀入一個元素,就建立一個新節點。

2)若二叉排序樹非空,則將新結點的值與根結點的值比較。如果小於根結點的值,則插入到左子樹中,否則插入到右子樹中。

3)若二叉排序樹為空,則新結點作為二叉樹的根結點。

 

Copy

void Create_BST(BiTree &T, KeyType str[], int n) { //用關鍵字陣列str[]建立一個二叉排序樹 T = NULL; //初始時bt為空樹 int i = 0; while(i < n) { //依次將每個元素插入 BST_Insert(T, str[i]); i++; } }

Retrieve-查詢二叉排序樹的某結點#

二叉排序樹的查詢是從根結點開始,沿某一分支逐層向下進行比較的一個遞迴的過程。

具體查詢過程是:

1)若二叉樹非空,將給定值與根結點的關鍵字比較,若相等,則查詢成功;

2)若不等,則當根結點的關鍵字大於給定關鍵字值k時,在根結點的左子樹中查詢;

3)當根結點的關鍵字小於給定關鍵字值k時,在根結點的右子樹中查詢。

二叉排序樹的非遞迴查詢演算法:

 

Copy

BSTNode *BST_Search(BiTree T,ElemTypr key,BSTNode *&p) { //查詢函式返回值指向關鍵字值為key的結點指標,若不存在,返回NULL p = NULL; //p指向被查詢結點的雙親,用於插入和刪除操作中 while(T != NULL && key != T->data) { p = T; if(key < T->data) { T = T->lchild; } else { T = T->rchild; } return T; } }

Update-插入結點到二叉排序樹中#

二叉排序樹作為一種動態集合,其特點是樹的結構通常不是一次生成的,而是在查詢過程中,當樹中不存在關鍵字等於給定值的結點時再進行插入。

由於二叉排序樹是遞迴定義的,其插入結點的過程是:

1)若原二叉樹為空,則直接插入結點;

2)否則,若關鍵字k小於根結點關鍵字,則插入到左子樹中;

3)若關鍵字k大於根結點關鍵字,則插入到右子樹中。

 

Copy

int BST_Insert(BiTree &T, KeyType k) { //在二叉=排序樹T中插入一個關鍵字為k的結點 if(T == NULL) { T = (BiTree)malloc(sizeof(BSTNode)); T->key = k; T->lchild = T->rchild = NULL; return 1; //返回1,表示成功 } else if(k == T-> key) { //樹中存在相同關鍵字的結點 return 0; } else if(k < T->key) { //插入到T的左子樹中 return BST_Insert(T->lchild, k); } else { return BST_Insert(T->rchild, k); } }

由此可見,插入的新結點一定是某個葉結點。下圖是向二叉樹插入結點28的過程,其中虛線表示查詢路徑。

二叉排序樹插入結點

圖2. 向二叉排序樹插入結點28

https://github.com/tygq5nux/jkgibzxucg/discussions/1678
https://github.com/djvb5gwz/kdnyzskenz/discussions/1693
https://github.com/tygq5nux/jkgibzxucg/discussions/1679
https://github.com/djvb5gwz/kdnyzskenz/discussions/1694
https://github.com/djvb5gwz/kdnyzskenz/discussions/1695
https://github.com/tygq5nux/jkgibzxucg/discussions/1680
https://github.com/djvb5gwz/kdnyzskenz/discussions/1696
https://github.com/tygq5nux/jkgibzxucg/discussions/1681
https://github.com/djvb5gwz/kdnyzskenz/discussions/1697
https://github.com/tygq5nux/jkgibzxucg/discussions/1682
https://github.com/djvb5gwz/kdnyzskenz/discussions/1698
https://github.com/tygq5nux/jkgibzxucg/discussions/1683
https://github.com/djvb5gwz/kdnyzskenz/discussions/1699
https://github.com/tygq5nux/jkgibzxucg/discussions/1684
https://github.com/djvb5gwz/kdnyzskenz/discussions/1700
https://github.com/tygq5nux/jkgibzxucg/discussions/1685
https://github.com/djvb5gwz/kdnyzskenz/discussions/1701
https://github.com/tygq5nux/jkgibzxucg/discussions/1686
https://github.com/djvb5gwz/kdnyzskenz/discussions/1702
https://github.com/tygq5nux/jkgibzxucg/discussions/1687
https://github.com/tygq5nux/jkgibzxucg/discussions/1688
https://github.com/djvb5gwz/kdnyzskenz/discussions/1703
https://github.com/tygq5nux/jkgibzxucg/discussions/1689
https://github.com/djvb5gwz/kdnyzskenz/discussions/1705
https://github.com/tygq5nux/jkgibzxucg/discussions/1690
https://github.com/tygq5nux/jkgibzxucg/discussions/1691
https://github.com/djvb5gwz/kdnyzskenz/discussions/1706
https://github.com/tygq5nux/jkgibzxucg/discussions/1692
https://github.com/djvb5gwz/kdnyzskenz/discussions/1707
https://github.com/tygq5nux/jkgibzxucg/discussions/1693
https://github.com/djvb5gwz/kdnyzskenz/discussions/1708
https://github.com/tygq5nux/jkgibzxucg/discussions/1694
https://github.com/djvb5gwz/kdnyzskenz/discussions/1709
https://github.com/tygq5nux/jkgibzxucg/discussions/1695
https://github.com/djvb5gwz/kdnyzskenz/discussions/1710
https://github.com/tygq5nux/jkgibzxucg/discussions/1696
https://github.com/djvb5gwz/kdnyzskenz/discussions/1711
https://github.com/tygq5nux/jkgibzxucg/discussions/1697
https://github.com/djvb5gwz/kdnyzskenz/discussions/1712
https://github.com/tygq5nux/jkgibzxucg/discussions/1698
https://github.com/djvb5gwz/kdnyzskenz/discussions/1713
https://github.com/tygq5nux/jkgibzxucg/discussions/1699
https://github.com/djvb5gwz/kdnyzskenz/discussions/1715
https://github.com/tygq5nux/jkgibzxucg/discussions/1700
https://github.com/djvb5gwz/kdnyzskenz/discussions/1716
https://github.com/tygq5nux/jkgibzxucg/discussions/1701
https://github.com/djvb5gwz/kdnyzskenz/discussions/1717
https://github.com/tygq5nux/jkgibzxucg/discussions/1702
https://github.com/djvb5gwz/kdnyzskenz/discussions/1718
https://github.com/tygq5nux/jkgibzxucg/discussions/1703
https://github.com/djvb5gwz/kdnyzskenz/discussions/1719
https://github.com/tygq5nux/jkgibzxucg/discussions/1704
https://github.com/djvb5gwz/kdnyzskenz/discussions/1720
https://github.com/tygq5nux/jkgibzxucg/discussions/1705
https://github.com/djvb5gwz/kdnyzskenz/discussions/1721
https://github.com/tygq5nux/jkgibzxucg/discussions/1706
https://github.com/djvb5gwz/kdnyzskenz/discussions/1722
https://github.com/tygq5nux/jkgibzxucg/discussions/1707
https://github.com/djvb5gwz/kdnyzskenz/discussions/1723
https://github.com/tygq5nux/jkgibzxucg/discussions/1708
https://github.com/tygq5nux/jkgibzxucg/discussions/1709
https://github.com/djvb5gwz/kdnyzskenz/discussions/1724
https://github.com/tygq5nux/jkgibzxucg/discussions/1710
https://github.com/djvb5gwz/kdnyzskenz/discussions/1725
https://github.com/tygq5nux/jkgibzxucg/discussions/1711
https://github.com/djvb5gwz/kdnyzskenz/discussions/1726
https://github.com/djvb5gwz/kdnyzskenz/discussions/1727
https://github.com/tygq5nux/jkgibzxucg/discussions/1712
https://github.com/tygq5nux/jkgibzxucg/discussions/1713
https://github.com/djvb5gwz/kdnyzskenz/discussions/1728
https://github.com/tygq5nux/jkgibzxucg/discussions/1714
https://github.com/djvb5gwz/kdnyzskenz/discussions/1729
https://github.com/djvb5gwz/kdnyzskenz/discussions/1730
https://github.com/tygq5nux/jkgibzxucg/discussions/1715
https://github.com/djvb5gwz/kdnyzskenz/discussions/1731
https://github.com/tygq5nux/jkgibzxucg/discussions/1716
https://github.com/djvb5gwz/kdnyzskenz/discussions/1732
https://github.com/tygq5nux/jkgibzxucg/discussions/1717
https://github.com/djvb5gwz/kdnyzskenz/discussions/1733
https://github.com/tygq5nux/jkgibzxucg/discussions/1718
https://github.com/djvb5gwz/kdnyzskenz/discussions/1734
https://github.com/tygq5nux/jkgibzxucg/discussions/1720
https://github.com/djvb5gwz/kdnyzskenz/discussions/1735
https://github.com/tygq5nux/jkgibzxucg/discussions/1721
https://github.com/djvb5gwz/kdnyzskenz/discussions/1736
https://github.com/tygq5nux/jkgibzxucg/discussions/1722
https://github.com/djvb5gwz/kdnyzskenz/discussions/1737
https://github.com/tygq5nux/jkgibzxucg/discussions/1723
https://github.com/djvb5gwz/kdnyzskenz/discussions/1738
https://github.com/tygq5nux/jkgibzxucg/discussions/1724
https://github.com/djvb5gwz/kdnyzskenz/discussions/1739
https://github.com/tygq5nux/jkgibzxucg/discussions/1725
https://github.com/djvb5gwz/kdnyzskenz/discussions/1740
https://github.com/tygq5nux/jkgibzxucg/discussions/1726
https://github.com/djvb5gwz/kdnyzskenz/discussions/1741
https://github.com/tygq5nux/jkgibzxucg/discussions/1727
https://github.com/djvb5gwz/kdnyzskenz/discussions/1742
https://github.com/tygq5nux/jkgibzxucg/discussions/1728
https://github.com/djvb5gwz/kdnyzskenz/discussions/1743
https://github.com/tygq5nux/jkgibzxucg/discussions/1729
https://github.com/djvb5gwz/kdnyzskenz/discussions/1744
https://github.com/tygq5nux/jkgibzxucg/discussions/1730
https://github.com/djvb5gwz/kdnyzskenz/discussions/1745
https://github.com/tygq5nux/jkgibzxucg/discussions/1731
https://github.com/djvb5gwz/kdnyzskenz/discussions/1746
https://github.com/tygq5nux/jkgibzxucg/discussions/1732
https://github.com/djvb5gwz/kdnyzskenz/discussions/1747
https://github.com/tygq5nux/jkgibzxucg/discussions/1733
https://github.com/djvb5gwz/kdnyzskenz/discussions/1748
https://github.com/tygq5nux/jkgibzxucg/discussions/1734
https://github.com/djvb5gwz/kdnyzskenz/discussions/1749
https://github.com/tygq5nux/jkgibzxucg/discussions/1735
https://github.com/djvb5gwz/kdnyzskenz/discussions/1750
https://github.com/tygq5nux/jkgibzxucg/discussions/1736
https://github.com/djvb5gwz/kdnyzskenz/discussions/1751
https://github.com/tygq5nux/jkgibzxucg/discussions/1737
https://github.com/djvb5gwz/kdnyzskenz/discussions/1752
https://github.com/tygq5nux/jkgibzxucg/discussions/1738
https://github.com/djvb5gwz/kdnyzskenz/discussions/1753
https://github.com/tygq5nux/jkgibzxucg/discussions/1739
https://github.com/tygq5nux/jkgibzxucg/discussions/1740
https://github.com/djvb5gwz/kdnyzskenz/discussions/1755
https://github.com/tygq5nux/jkgibzxucg/discussions/1741
https://github.com/djvb5gwz/kdnyzskenz/discussions/1756
https://github.com/tygq5nux/jkgibzxucg/discussions/1742
https://github.com/djvb5gwz/kdnyzskenz/discussions/1757
https://github.com/tygq5nux/jkgibzxucg/discussions/1743
https://github.com/djvb5gwz/kdnyzskenz/discussions/1758
https://github.com/tygq5nux/jkgibzxucg/discussions/1744
https://github.com/djvb5gwz/kdnyzskenz/discussions/1759
https://github.com/tygq5nux/jkgibzxucg/discussions/1745
https://github.com/djvb5gwz/kdnyzskenz/discussions/1760
https://github.com/djvb5gwz/kdnyzskenz/discussions/1761
https://github.com/tygq5nux/jkgibzxucg/discussions/1746
https://github.com/djvb5gwz/kdnyzskenz/discussions/1762
https://github.com/tygq5nux/jkgibzxucg/discussions/1747
https://github.com/djvb5gwz/kdnyzskenz/discussions/1763
https://github.com/tygq5nux/jkgibzxucg/discussions/1748
https://github.com/djvb5gwz/kdnyzskenz/discussions/1764
https://github.com/djvb5gwz/kdnyzskenz/discussions/1765
https://github.com/tygq5nux/jkgibzxucg/discussions/1750
https://github.com/djvb5gwz/kdnyzskenz/discussions/1766
https://github.com/tygq5nux/jkgibzxucg/discussions/1751
https://github.com/tygq5nux/jkgibzxucg/discussions/1752
https://github.com/djvb5gwz/kdnyzskenz/discussions/1767
https://github.com/tygq5nux/jkgibzxucg/discussions/1753
https://github.com/djvb5gwz/kdnyzskenz/discussions/1768
https://github.com/tygq5nux/jkgibzxucg/discussions/1754
https://github.com/djvb5gwz/kdnyzskenz/discussions/1769
https://github.com/tygq5nux/jkgibzxucg/discussions/1755
https://github.com/djvb5gwz/kdnyzskenz/discussions/1770
https://github.com/tygq5nux/jkgibzxucg/discussions/1756
https://github.com/djvb5gwz/kdnyzskenz/discussions/1771
https://github.com/tygq5nux/jkgibzxucg/discussions/1757
https://github.com/djvb5gwz/kdnyzskenz/discussions/1772
https://github.com/tygq5nux/jkgibzxucg/discussions/1758
https://github.com/djvb5gwz/kdnyzskenz/discussions/1773
https://github.com/tygq5nux/jkgibzxucg/discussions/1759
https://github.com/djvb5gwz/kdnyzskenz/discussions/1774
https://github.com/tygq5nux/jkgibzxucg/discussions/1760
https://github.com/djvb5gwz/kdnyzskenz/discussions/1775
https://github.com/tygq5nux/jkgibzxucg/discussions/1761
https://github.com/djvb5gwz/kdnyzskenz/discussions/1776
https://github.com/tygq5nux/jkgibzxucg/discussions/1762
https://github.com/djvb5gwz/kdnyzskenz/discussions/1777
https://github.com/tygq5nux/jkgibzxucg/discussions/1763
https://github.com/djvb5gwz/kdnyzskenz/discussions/1778
https://github.com/tygq5nux/jkgibzxucg/discussions/1764
https://github.com/djvb5gwz/kdnyzskenz/discussions/1779
https://github.com/tygq5nux/jkgibzxucg/discussions/1765
https://github.com/djvb5gwz/kdnyzskenz/discussions/1780
https://github.com/tygq5nux/jkgibzxucg/discussions/1766
https://github.com/djvb5gwz/kdnyzskenz/discussions/1781
https://github.com/tygq5nux/jkgibzxucg/discussions/1767
https://github.com/djvb5gwz/kdnyzskenz/discussions/1782
https://github.com/tygq5nux/jkgibzxucg/discussions/1768
https://github.com/djvb5gwz/kdnyzskenz/discussions/1783
https://github.com/tygq5nux/jkgibzxucg/discussions/1769
https://github.com/djvb5gwz/kdnyzskenz/discussions/1784
https://github.com/tygq5nux/jkgibzxucg/discussions/1770
https://github.com/djvb5gwz/kdnyzskenz/discussions/1785
https://github.com/tygq5nux/jkgibzxucg/discussions/1771
https://github.com/djvb5gwz/kdnyzskenz/discussions/1786
https://github.com/tygq5nux/jkgibzxucg/discussions/1772
https://github.com/djvb5gwz/kdnyzskenz/discussions/1787
https://github.com/djvb5gwz/kdnyzskenz/discussions/1788
https://github.com/tygq5nux/jkgibzxucg/discussions/1773
https://github.com/djvb5gwz/kdnyzskenz/discussions/1789
https://github.com/tygq5nux/jkgibzxucg/discussions/1774
https://github.com/djvb5gwz/kdnyzskenz/discussions/1790
https://github.com/tygq5nux/jkgibzxucg/discussions/1775
https://github.com/djvb5gwz/kdnyzskenz/discussions/1791
https://github.com/tygq5nux/jkgibzxucg/discussions/1776
https://github.com/djvb5gwz/kdnyzskenz/discussions/1792
https://github.com/tygq5nux/jkgibzxucg/discussions/1777
https://github.com/djvb5gwz/kdnyzskenz/discussions/1793
https://github.com/tygq5nux/jkgibzxucg/discussions/1778
https://github.com/djvb5gwz/kdnyzskenz/discussions/1794
https://github.com/tygq5nux/jkgibzxucg/discussions/1779
https://github.com/djvb5gwz/kdnyzskenz/discussions/1795
https://github.com/djvb5gwz/kdnyzskenz/discussions/1796
https://github.com/tygq5nux/jkgibzxucg/discussions/1780
https://github.com/djvb5gwz/kdnyzskenz/discussions/1797
https://github.com/tygq5nux/jkgibzxucg/discussions/1781
https://github.com/djvb5gwz/kdnyzskenz/discussions/1798
https://github.com/tygq5nux/jkgibzxucg/discussions/1782
https://github.com/djvb5gwz/kdnyzskenz/discussions/1799
https://github.com/tygq5nux/jkgibzxucg/discussions/1783
https://github.com/tygq5nux/jkgibzxucg/discussions/1784
https://github.com/djvb5gwz/kdnyzskenz/discussions/1800
https://github.com/tygq5nux/jkgibzxucg/discussions/1785
https://github.com/djvb5gwz/kdnyzskenz/discussions/1801
https://github.com/tygq5nux/jkgibzxucg/discussions/1786
https://github.com/djvb5gwz/kdnyzskenz/discussions/1802
https://github.com/tygq5nux/jkgibzxucg/discussions/1787
https://github.com/djvb5gwz/kdnyzskenz/discussions/1803
https://github.com/tygq5nux/jkgibzxucg/discussions/1788
https://github.com/djvb5gwz/kdnyzskenz/discussions/1804
https://github.com/tygq5nux/jkgibzxucg/discussions/1789
https://github.com/djvb5gwz/kdnyzskenz/discussions/1805
https://github.com/tygq5nux/jkgibzxucg/discussions/1790
https://github.com/djvb5gwz/kdnyzskenz/discussions/1806
https://github.com/tygq5nux/jkgibzxucg/discussions/1791
https://github.com/djvb5gwz/kdnyzskenz/discussions/1807
https://github.com/tygq5nux/jkgibzxucg/discussions/1792
https://github.com/djvb5gwz/kdnyzskenz/discussions/1808
https://github.com/tygq5nux/jkgibzxucg/discussions/1793
https://github.com/djvb5gwz/kdnyzskenz/discussions/1809
https://github.com/tygq5nux/jkgibzxucg/discussions/1794
https://github.com/djvb5gwz/kdnyzskenz/discussions/1810
https://github.com/tygq5nux/jkgibzxucg/discussions/1795
https://github.com/djvb5gwz/kdnyzskenz/discussions/1811
https://github.com/tygq5nux/jkgibzxucg/discussions/1796
https://github.com/djvb5gwz/kdnyzskenz/discussions/1812
https://github.com/tygq5nux/jkgibzxucg/discussions/1797
https://github.com/djvb5gwz/kdnyzskenz/discussions/1813
https://github.com/tygq5nux/jkgibzxucg/discussions/1798
https://github.com/tygq5nux/jkgibzxucg/discussions/1799
https://github.com/djvb5gwz/kdnyzskenz/discussions/1814
https://github.com/djvb5gwz/kdnyzskenz/discussions/1815
https://github.com/tygq5nux/jkgibzxucg/discussions/1800
https://github.com/djvb5gwz/kdnyzskenz/discussions/1816
https://github.com/tygq5nux/jkgibzxucg/discussions/1801
https://github.com/djvb5gwz/kdnyzskenz/discussions/1817
https://github.com/tygq5nux/jkgibzxucg/discussions/1802
https://github.com/djvb5gwz/kdnyzskenz/discussions/1818
https://github.com/tygq5nux/jkgibzxucg/discussions/1803
https://github.com/djvb5gwz/kdnyzskenz/discussions/1819
https://github.com/tygq5nux/jkgibzxucg/discussions/1804
https://github.com/djvb5gwz/kdnyzskenz/discussions/1820
https://github.com/tygq5nux/jkgibzxucg/discussions/1805
https://github.com/djvb5gwz/kdnyzskenz/discussions/1821
https://github.com/tygq5nux/jkgibzxucg/discussions/1806
https://github.com/djvb5gwz/kdnyzskenz/discussions/1822
https://github.com/tygq5nux/jkgibzxucg/discussions/1807
https://github.com/djvb5gwz/kdnyzskenz/discussions/1823
https://github.com/tygq5nux/jkgibzxucg/discussions/1808
https://github.com/djvb5gwz/kdnyzskenz/discussions/1824
https://github.com/tygq5nux/jkgibzxucg/discussions/1809
https://github.com/djvb5gwz/kdnyzskenz/discussions/1825
https://github.com/tygq5nux/jkgibzxucg/discussions/1810
https://github.com/djvb5gwz/kdnyzskenz/discussions/1826
https://github.com/tygq5nux/jkgibzxucg/discussions/1811
https://github.com/djvb5gwz/kdnyzskenz/discussions/1827
https://github.com/tygq5nux/jkgibzxucg/discussions/1812
https://github.com/djvb5gwz/kdnyzskenz/discussions/1828
https://github.com/tygq5nux/jkgibzxucg/discussions/1813
https://github.com/djvb5gwz/kdnyzskenz/discussions/1829
https://github.com/tygq5nux/jkgibzxucg/discussions/1814
https://github.com/djvb5gwz/kdnyzskenz/discussions/1830
https://github.com/tygq5nux/jkgibzxucg/discussions/1815
https://github.com/djvb5gwz/kdnyzskenz/discussions/1831
https://github.com/tygq5nux/jkgibzxucg/discussions/1816
https://github.com/djvb5gwz/kdnyzskenz/discussions/1832
https://github.com/tygq5nux/jkgibzxucg/discussions/1817
https://github.com/djvb5gwz/kdnyzskenz/discussions/1833
https://github.com/tygq5nux/jkgibzxucg/discussions/1818
https://github.com/djvb5gwz/kdnyzskenz/discussions/1834
https://github.com/tygq5nux/jkgibzxucg/discussions/1819
https://github.com/djvb5gwz/kdnyzskenz/discussions/1835
https://github.com/tygq5nux/jkgibzxucg/discussions/1820
https://github.com/djvb5gwz/kdnyzskenz/discussions/1836
https://github.com/tygq5nux/jkgibzxucg/discussions/1821
https://github.com/djvb5gwz/kdnyzskenz/discussions/1837
https://github.com/tygq5nux/jkgibzxucg/discussions/1822
https://github.com/djvb5gwz/kdnyzskenz/discussions/1838
https://github.com/tygq5nux/jkgibzxucg/discussions/1823
https://github.com/djvb5gwz/kdnyzskenz/discussions/1839
https://github.com/tygq5nux/jkgibzxucg/discussions/1824
https://github.com/djvb5gwz/kdnyzskenz/discussions/1840
https://github.com/tygq5nux/jkgibzxucg/discussions/1825
https://github.com/djvb5gwz/kdnyzskenz/discussions/1841
https://github.com/tygq5nux/jkgibzxucg/discussions/1826
https://github.com/djvb5gwz/kdnyzskenz/discussions/1842
https://github.com/tygq5nux/jkgibzxucg/discussions/1827
https://github.com/djvb5gwz/kdnyzskenz/discussions/1843
https://github.com/tygq5nux/jkgibzxucg/discussions/1828
https://github.com/djvb5gwz/kdnyzskenz/discussions/1844
https://github.com/tygq5nux/jkgibzxucg/discussions/1829
https://github.com/djvb5gwz/kdnyzskenz/discussions/1845
https://github.com/tygq5nux/jkgibzxucg/discussions/1830
https://github.com/djvb5gwz/kdnyzskenz/discussions/1846
https://github.com/tygq5nux/jkgibzxucg/discussions/1831
https://github.com/djvb5gwz/kdnyzskenz/discussions/1847
https://github.com/tygq5nux/jkgibzxucg/discussions/1832
https://github.com/djvb5gwz/kdnyzskenz/discussions/1848
https://github.com/tygq5nux/jkgibzxucg/discussions/1833
https://github.com/djvb5gwz/kdnyzskenz/discussions/1849
https://github.com/tygq5nux/jkgibzxucg/discussions/1834
https://github.com/djvb5gwz/kdnyzskenz/discussions/1850
https://github.com/tygq5nux/jkgibzxucg/discussions/1835
https://github.com/djvb5gwz/kdnyzskenz/discussions/1851
https://github.com/tygq5nux/jkgibzxucg/discussions/1836
https://github.com/djvb5gwz/kdnyzskenz/discussions/1852
https://github.com/tygq5nux/jkgibzxucg/discussions/1837
https://github.com/djvb5gwz/kdnyzskenz/discussions/1853
https://github.com/djvb5gwz/kdnyzskenz/discussions/1854
https://github.com/tygq5nux/jkgibzxucg/discussions/1839
https://github.com/djvb5gwz/kdnyzskenz/discussions/1855
https://github.com/tygq5nux/jkgibzxucg/discussions/1840
https://github.com/tygq5nux/jkgibzxucg/discussions/1841
https://github.com/djvb5gwz/kdnyzskenz/discussions/1856
https://github.com/djvb5gwz/kdnyzskenz/discussions/1857
https://github.com/tygq5nux/jkgibzxucg/discussions/1842
https://github.com/djvb5gwz/kdnyzskenz/discussions/1858
https://github.com/tygq5nux/jkgibzxucg/discussions/1843
https://github.com/djvb5gwz/kdnyzskenz/discussions/1859
https://github.com/tygq5nux/jkgibzxucg/discussions/1844
https://github.com/djvb5gwz/kdnyzskenz/discussions/1860
https://github.com/tygq5nux/jkgibzxucg/discussions/1845
https://github.com/djvb5gwz/kdnyzskenz/discussions/1861
https://github.com/tygq5nux/jkgibzxucg/discussions/1846
https://github.com/djvb5gwz/kdnyzskenz/discussions/1862
https://github.com/tygq5nux/jkgibzxucg/discussions/1847
https://github.com/djvb5gwz/kdnyzskenz/discussions/1863
https://github.com/tygq5nux/jkgibzxucg/discussions/1848
https://github.com/djvb5gwz/kdnyzskenz/discussions/1864
https://github.com/tygq5nux/jkgibzxucg/discussions/1849
https://github.com/djvb5gwz/kdnyzskenz/discussions/1865
https://github.com/tygq5nux/jkgibzxucg/discussions/1850
https://github.com/djvb5gwz/kdnyzskenz/discussions/1866
https://github.com/tygq5nux/jkgibzxucg/discussions/1851
https://github.com/djvb5gwz/kdnyzskenz/discussions/1867
https://github.com/tygq5nux/jkgibzxucg/discussions/1852
https://github.com/djvb5gwz/kdnyzskenz/discussions/1868
https://github.com/tygq5nux/jkgibzxucg/discussions/1853
https://github.com/djvb5gwz/kdnyzskenz/discussions/1869
https://github.com/tygq5nux/jkgibzxucg/discussions/1854
https://github.com/djvb5gwz/kdnyzskenz/discussions/1870
https://github.com/tygq5nux/jkgibzxucg/discussions/1855
https://github.com/djvb5gwz/kdnyzskenz/discussions/1871
https://github.com/tygq5nux/jkgibzxucg/discussions/1856
https://github.com/djvb5gwz/kdnyzskenz/discussions/1872
https://github.com/tygq5nux/jkgibzxucg/discussions/1857
https://github.com/djvb5gwz/kdnyzskenz/discussions/1873
https://github.com/tygq5nux/jkgibzxucg/discussions/1858
https://github.com/djvb5gwz/kdnyzskenz/discussions/1874
https://github.com/tygq5nux/jkgibzxucg/discussions/1859
https://github.com/djvb5gwz/kdnyzskenz/discussions/1875
https://github.com/tygq5nux/jkgibzxucg/discussions/1860
https://github.com/djvb5gwz/kdnyzskenz/discussions/1876
https://github.com/tygq5nux/jkgibzxucg/discussions/1861
https://github.com/djvb5gwz/kdnyzskenz/discussions/1877
https://github.com/tygq5nux/jkgibzxucg/discussions/1862
https://github.com/djvb5gwz/kdnyzskenz/discussions/1878
https://github.com/tygq5nux/jkgibzxucg/discussions/1863
https://github.com/djvb5gwz/kdnyzskenz/discussions/1879
https://github.com/tygq5nux/jkgibzxucg/discussions/1864
https://github.com/djvb5gwz/kdnyzskenz/discussions/1880
https://github.com/tygq5nux/jkgibzxucg/discussions/1865
https://github.com/djvb5gwz/kdnyzskenz/discussions/1881
https://github.com/tygq5nux/jkgibzxucg/discussions/1866
https://github.com/tygq5nux/jkgibzxucg/discussions/1867
https://github.com/djvb5gwz/kdnyzskenz/discussions/1882
https://github.com/tygq5nux/jkgibzxucg/discussions/1868
https://github.com/djvb5gwz/kdnyzskenz/discussions/1884
https://github.com/tygq5nux/jkgibzxucg/discussions/1869
https://github.com/djvb5gwz/kdnyzskenz/discussions/1885
https://github.com/tygq5nux/jkgibzxucg/discussions/1870
https://github.com/djvb5gwz/kdnyzskenz/discussions/1886
https://github.com/tygq5nux/jkgibzxucg/discussions/1871
https://github.com/djvb5gwz/kdnyzskenz/discussions/1887
https://github.com/tygq5nux/jkgibzxucg/discussions/1872
https://github.com/djvb5gwz/kdnyzskenz/discussions/1888
https://github.com/tygq5nux/jkgibzxucg/discussions/1873
https://github.com/djvb5gwz/kdnyzskenz/discussions/1889
https://github.com/tygq5nux/jkgibzxucg/discussions/1874
https://github.com/djvb5gwz/kdnyzskenz/discussions/1890
https://github.com/tygq5nux/jkgibzxucg/discussions/1875
https://github.com/tygq5nux/jkgibzxucg/discussions/1876
https://github.com/djvb5gwz/kdnyzskenz/discussions/1891
https://github.com/djvb5gwz/kdnyzskenz/discussions/1892
https://github.com/tygq5nux/jkgibzxucg/discussions/1877
https://github.com/djvb5gwz/kdnyzskenz/discussions/1893
https://github.com/djvb5gwz/kdnyzskenz/discussions/1894
https://github.com/tygq5nux/jkgibzxucg/discussions/1878
https://github.com/djvb5gwz/kdnyzskenz/discussions/1895
https://github.com/tygq5nux/jkgibzxucg/discussions/1879
https://github.com/djvb5gwz/kdnyzskenz/discussions/1896
https://github.com/tygq5nux/jkgibzxucg/discussions/1880
https://github.com/djvb5gwz/kdnyzskenz/discussions/1897
https://github.com/tygq5nux/jkgibzxucg/discussions/1881
https://github.com/djvb5gwz/kdnyzskenz/discussions/1898
https://github.com/tygq5nux/jkgibzxucg/discussions/1882
https://github.com/djvb5gwz/kdnyzskenz/discussions/1899
https://github.com/tygq5nux/jkgibzxucg/discussions/1883
https://github.com/djvb5gwz/kdnyzskenz/discussions/1900
https://github.com/tygq5nux/jkgibzxucg/discussions/1884
https://github.com/djvb5gwz/kdnyzskenz/discussions/1901
https://github.com/tygq5nux/jkgibzxucg/discussions/1885
https://github.com/djvb5gwz/kdnyzskenz/discussions/1902
https://github.com/tygq5nux/jkgibzxucg/discussions/1886
https://github.com/djvb5gwz/kdnyzskenz/discussions/1903
https://github.com/tygq5nux/jkgibzxucg/discussions/1887
https://github.com/djvb5gwz/kdnyzskenz/discussions/1904
https://github.com/tygq5nux/jkgibzxucg/discussions/1888
https://github.com/djvb5gwz/kdnyzskenz/discussions/1905
https://github.com/tygq5nux/jkgibzxucg/discussions/1889
https://github.com/djvb5gwz/kdnyzskenz/discussions/1906
https://github.com/tygq5nux/jkgibzxucg/discussions/1890
https://github.com/djvb5gwz/kdnyzskenz/discussions/1907
https://github.com/tygq5nux/jkgibzxucg/discussions/1891
https://github.com/djvb5gwz/kdnyzskenz/discussions/1908
https://github.com/tygq5nux/jkgibzxucg/discussions/1892
https://github.com/djvb5gwz/kdnyzskenz/discussions/1909
https://github.com/tygq5nux/jkgibzxucg/discussions/1893
https://github.com/djvb5gwz/kdnyzskenz/discussions/1910
https://github.com/tygq5nux/jkgibzxucg/discussions/1894
https://github.com/tygq5nux/jkgibzxucg/discussions/1895
https://github.com/djvb5gwz/kdnyzskenz/discussions/1911
https://github.com/djvb5gwz/kdnyzskenz/discussions/1912
https://github.com/tygq5nux/jkgibzxucg/discussions/1896
https://github.com/tygq5nux/jkgibzxucg/discussions/1897
https://github.com/djvb5gwz/kdnyzskenz/discussions/1914
https://github.com/tygq5nux/jkgibzxucg/discussions/1898
https://github.com/tygq5nux/jkgibzxucg/discussions/1899
https://github.com/djvb5gwz/kdnyzskenz/discussions/1915
https://github.com/tygq5nux/jkgibzxucg/discussions/1900
https://github.com/djvb5gwz/kdnyzskenz/discussions/1916
https://github.com/tygq5nux/jkgibzxucg/discussions/1901
https://github.com/djvb5gwz/kdnyzskenz/discussions/1917
https://github.com/tygq5nux/jkgibzxucg/discussions/1902
https://github.com/djvb5gwz/kdnyzskenz/discussions/1918
https://github.com/tygq5nux/jkgibzxucg/discussions/1903
https://github.com/djvb5gwz/kdnyzskenz/discussions/1919
https://github.com/tygq5nux/jkgibzxucg/discussions/1904
https://github.com/djvb5gwz/kdnyzskenz/discussions/1920
https://github.com/tygq5nux/jkgibzxucg/discussions/1905
https://github.com/djvb5gwz/kdnyzskenz/discussions/1921
https://github.com/tygq5nux/jkgibzxucg/discussions/1906
https://github.com/djvb5gwz/kdnyzskenz/discussions/1922
https://github.com/tygq5nux/jkgibzxucg/discussions/1907
https://github.com/djvb5gwz/kdnyzskenz/discussions/1923
https://github.com/tygq5nux/jkgibzxucg/discussions/1908
https://github.com/djvb5gwz/kdnyzskenz/discussions/1924
https://github.com/tygq5nux/jkgibzxucg/discussions/1909
https://github.com/djvb5gwz/kdnyzskenz/discussions/1925
https://github.com/tygq5nux/jkgibzxucg/discussions/1910
https://github.com/djvb5gwz/kdnyzskenz/discussions/1926
https://github.com/tygq5nux/jkgibzxucg/discussions/1911
https://github.com/djvb5gwz/kdnyzskenz/discussions/1927
https://github.com/tygq5nux/jkgibzxucg/discussions/1912
https://github.com/djvb5gwz/kdnyzskenz/discussions/1928
https://github.com/tygq5nux/jkgibzxucg/discussions/1913
https://github.com/djvb5gwz/kdnyzskenz/discussions/1929
https://github.com/tygq5nux/jkgibzxucg/discussions/1914
https://github.com/djvb5gwz/kdnyzskenz/discussions/1930
https://github.com/tygq5nux/jkgibzxucg/discussions/1915
https://github.com/djvb5gwz/kdnyzskenz/discussions/1931
 

Delete-刪除二叉樹的結點#

在二叉排序樹中刪除一個結點時,不能把以該結點為根的子樹上的結點都刪除,必須把被刪除結點從儲存二叉排序樹的連結串列上摘下,將因刪除結點而斷開的二叉連結串列重新連結起來,同時確保二叉排序樹的性質不會丟失。

刪除操作的實現過程按3種情況來處理:

1)如果被刪除結點z是葉結點,則直接刪除,不會破壞二叉排序樹的性質。

2)若結點z只有一棵左子樹或右子樹,則讓z的子樹成為z父結點的子樹,替代z的位置。

3)若結點z有左、右兩棵子樹,則令z的直接後繼【中序第一個子女】(或直接前驅)替代z,然後從二叉排序樹中刪去這個直接後繼【中序第一個子女】(或直接前驅),這樣就轉換成了第一或第二種情況。

3種情況下的刪除過程

圖3. 3種情況下的刪除過程

參考#

[1] miao_zheng. 二叉排序樹、平衡二叉樹、B樹&B+樹、紅黑樹的設計動機、缺陷與應用場景[OL]. cnblogs, 2018-02-28/2020-06-20
[2] 王道論壇. 2019年資料結構考研複習指導[M].北京:電子工業出版社, 2018:153-155.

相關文章