4 張 GIF 圖幫助你理解二叉樹搜索算法

二叉查找樹(Binary Search Tree),也稱二叉搜索樹,是指一棵空樹或者具備下列性質的二叉樹:算法

  • 任意節點的左子樹不空,則左子樹上全部結點的值均小於它的根結點的值;
  • 任意節點的右子樹不空,則右子樹上全部結點的值均大於它的根結點的值;
  • 任意節點的左、右子樹也分別爲二叉查找樹;
  • 沒有鍵值相等的節點。

二叉查找樹相比於其餘數據結構的優點在於查找、插入的時間複雜度較低。爲O(log n)。二叉查找樹是基礎性數據結構,用於構建更爲抽象的數據結構,如集合、multiset、關聯數組等。(摘自維基百科數組

下面 4 張 GIF 動圖,是 penjee 官博製做分享。,分享給你們。數據結構

圖1:查找 BST 中的某個元素

在二叉搜索樹b中查找x的過程爲:spa

  1. 若b是空樹,則搜索失敗,不然:
  2. 若x等於b的根節點的數據域之值,則查找成功;不然:
  3. 若x小於b的根節點的數據域之值,則搜索左子樹;不然:
  4. 查找右子樹。

圖2 ↓ :從有序數組構造一個二叉查找樹

圖3 ↓:往 BST 中插入元素

向一個二叉搜索樹b中插入一個節點s的算法,過程爲:3d

  1. 若b是空樹,則將s所指結點做爲根節點插入,不然:
  2. 若s->data等於b的根節點的數據域之值,則返回,不然:
  3. 若s->data小於b的根節點的數據域之值,則把s所指節點插入到左子樹中,不然:
  4. 把s所指節點插入到右子樹中。(新插入節點老是葉子節點)

圖4 ↓:BST 轉成有序數組

相關文章
相關標籤/搜索