后序线索树怎样画图_算法新解刘新宇(二)二叉搜索树:数据结构中的“hello world”...
二叉搜索樹BST定義:
基于廣義二叉樹,一顆二叉樹定義:或者為空 或者包含三部分:一個值,一個左分支和一個右分支。這兩個分支也都是二叉樹分支。一顆二叉搜索樹是滿足下面條件的二叉樹:所有左分支的值都小于本節點的值;本節點的值小于所有右分支的值;所以這也代表了BST中的value應當是能夠進行大小比較的。數據結構表示:
通過鏈表進行表示時,會分為兩大部分:value區與索引區:索引區分為left right兩個區域,自己實現在某些情況下能夠用上parent;value是樹中所保存的關鍵信息;對于BST書上講解了四種操作:插入 遍歷 搜索 刪除
插入:
我們可以使用下面的算法向一顆二叉搜索樹插入一個鍵K:
如果樹為空,創建一個葉子節點,令該節點的key = k; 如果k小于根節點的key,將它插入到左子樹中; 如果k大于根節點的key,將它插入到右子樹中。存在一個特殊情況,當k等于根節點的key時,說明已經存在。這個時候可以按照具體需求來操作:如重寫數據或者忽略。
插入算法是遞歸或者遞推實現的,可以嘗試一下。
遍歷:
前序遍歷 中序遍歷 后續遍歷
BST的中序遍歷是最有特點的。對BST進行中序遍歷,元素會按照從小到大的順序輸出,這個是由二叉搜索樹的定義決定的。
遍歷這個問題可以先通過遞歸的方式簡單進行實現,理解它的定義。實現后通過遞推的方式進行實現,對個人的幫助較大。先序遍歷 中序遍歷可以通過一個棧空間輔助實現。后序遍歷會稍微復雜些,也是通過棧實現,其中的元素需要有一個標志位,確定訪問次數,確保左右子樹均訪問后才能將該節點出棧。
搜索:
二叉搜索樹有三種搜索:在樹中查找一個key,查找最大或最小的元素;查找給定元素的前驅或者后繼。
二叉搜索樹非常適合進行元素的查找:
如果樹為空,查找失敗;如果根節點的key等于查找值,查找成功,返回根節點作為結果;如果待查找的值小于根節點的key,繼續在左子樹中遞歸查找;如果待查找的值大于根節點的key,繼續在右子樹中遞歸查找;最小元素和最大元素
利用最小元素在樹的最左邊,最大元素在樹的最右邊的特性進行查找;
前驅與后繼——>容易讓人聯想到二叉線索樹
在實際使用一些數據結構的時候,前驅和后繼意義較大。值得研究一下。
刪除一個元素
不用真實的刪除,單純的用一個標記位進行標記?
或者通過遞歸的方式進行刪除
總結
以上是生活随笔為你收集整理的后序线索树怎样画图_算法新解刘新宇(二)二叉搜索树:数据结构中的“hello world”...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端为什么有的接口明明是成功回调却执行了
- 下一篇: java可达性_java垃圾回收机制--