二叉排序樹:
1.求最大值、最小值
方法:最小值是最左的節點,最大值是最右的節點,只需遍歷尋找最左的節點和最右的節點即可
2查詢:
查詢關鍵字的值為key的元素,先從根節點開始,如果根節點為空,那麼二叉樹為空,沒有查詢到,否則,key和根節點值做比較,
如果小於根節點的值,那麼就在左子樹中查詢,如果key等於根節點的值,那麼查詢成功,通知搜尋,同樣的,key大於根節點那麼就在
右子樹中查詢
3插入演算法
對資料集合元素x1,x2...xn
令x1是二叉樹的根節點
若x2x1,那麼x1為x2的右子樹的根節點
4刪除演算法
(刪除以後的二叉樹仍是一顆二叉排序樹)
假設要刪除的節點指標是p,p的父親節點的指標為f,會有四種情況
(1) p是葉子節點,那麼直接刪除節點p,f指向的p的指標域置空
(2)p只有左子樹或者是只有右子樹,(左右子樹有乙個為空) k是p的左子樹,只需要將k的根節點和p的的父親節點連線。設指標q指向p的一
個非空孩子節點
(3)p有兩個孩子,
(1)可以用中序遍歷序列的直接後繼節點代替p,p的中序遍歷序列的直接
後繼一定是怕的右子樹中最小的節點,即右子樹的最左節點沒有左子樹
假設這個節點用指標s表示,將s放在p的位置然後刪除節點s
(2)可以用中序遍歷徐略的直接前驅節點代替p,p的中序遍歷序列的直接
前驅一定是左子樹中最大的節點,即左子樹中左右節點沒有右子樹,假設
這個節點用指標s表示,將s放在p的位置,刪除節點s
具體**在github:
JAVA 二叉排序樹
二叉排序樹 二叉檢索樹 author lao yang public class binarysearchtree 插入乙個節點,假如已經存在這個值返回 false 否則true param value 節點值 return 插入成功與否 public boolean insert int valu...
動態查詢之 二叉排序樹
從圖上可得出二叉排序樹的基本概念。左子樹小於根,右子樹大於根 中序遍歷後有序 樹中最小的樹在最左邊,最大的在最右邊 這裡主要分析一下二叉排序樹的插入和刪除。pcur new node key,value if key pparent key else if key pparent key 這裡只擷取...
java實現二叉排序樹
二叉排序樹 非空左子樹的所有鍵值小於其根節點的鍵值 非空右子數的所有鍵值大於其根節點的鍵值 左右子數都是二叉排序樹 建立先是建立一棵樹 然後進行新增節點 比根節點小那麼就放到左子樹 在進行遞迴 比根節點大那麼就放到右子數 在進行遞迴 public void add node node if node...