簡體   English   中英

javascript中使用鏈表實現二叉搜索樹

[英]Implementation of Binary Search Tree using linked list in javascript

請問實現BST和用鏈表實現是一樣的嗎? 例如,要實現一棵二叉搜索樹,我們必須創建一個節點,其中包含其左右孩子的信息,類似於我們使用鏈表時的情況,因為節點由數據、左右孩子等三部分組成. 那有什么區別呢? 提前謝謝你的想法。

我實現了 BST 並應用了中序遍歷並搜索了元素。 但是我發現很難理解二叉搜索樹和鏈表之間的關系。 請糾正我。

鏈接的含義在二叉搜索樹和雙向鏈表中是不同的。

在雙向鏈表中,一個節點的左鏈接是另一個節點的反向右鏈接(反之亦然):

1 <-> 2 <-> 3 <-> 4

換句話說,我們總是有

left(right(node)) = node

如果node有一個right的鏈接和

right(left(node)) = node

如果nodeleft鏈接。

但是搜索樹

  2
 / \
1   4
   / \
  3   5

節點 4 連接到三個鏈接:一個輸入和兩個輸出,我們有

left(right(2)) = left(4) = 3

雙鏈表

鏈表是線性數據結構 正如geeksforgeeks.org所說:

數據元素按順序或線性排列的數據結構,其中每個元素都附加到其前一個和下一個相鄰元素,稱為線性數據結構。 在線性數據結構中,涉及單層。 因此,我們只能單次遍歷所有元素。 線性數據結構很容易實現,因為計算機 memory 是按線性方式排列的。 它的例子有數組、棧、隊列、鏈表等。

Item_1 <--> Item_2 <--> Item_3 <--> Item_4 <--> Item_5 <--> Item_6 <--> Item_7

二叉搜索樹

二叉搜索樹是非線性數據結構。 正如geeksforgeeks.org所說:

數據元素不是按順序或線性排列的數據結構稱為非線性數據結構。 在非線性數據結構中,不涉及單層。 因此,我們不能單次遍歷所有元素。 與線性數據結構相比,非線性數據結構不易實現。 與線性數據結構相比,它有效地利用了計算機 memory

                 8
                / \
               3   10
              / \    \
             1   6    14
                / \     \
               4   7     15

暫無
暫無

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

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