二叉搜尋樹(binary search tree)簡稱 bst,是一種特殊形式的二叉樹。
二叉搜尋樹的的結構有兩種可能:
對於二叉搜尋樹,需要掌握基本的操作:
當要查詢目標值的節點時,我們可以根據二叉樹的結點資料值的有序性(左孩子 <= 根結點 <= 右孩子),根據以下思路進行查詢:
簡單實現:
// 返回以目標值結點為根結點的二叉樹
function
search
(root, val)
if(root.val === val)
else
if(root.val > val)
else
}
簡單實現:
function
insert
(root, val)
if(val < root.val)
else
return root
};
刪除結點時,我們要考慮以下情況:
簡單實現:
function
delete
(root, n)
if(root.val === n)
else
if(root.left)
else
}else
if(root.val > n)
else
}// 尋找左子樹最大值
function
findmax
(root)
}// 尋找右子樹的最小值
function
findmin
(root)
}
二叉搜尋樹 增刪查
性質 每個節點的key值各不相同 左子樹上所有節點的key值小於根結點 右子樹上的所有節點key值大於根結點 左右子樹都是二叉搜尋樹 insert插入 bool insert const k key 非遞迴插入 node cur root node parent null while cur els...
二叉排序樹的增 刪 改 查
public class node public void add int m else else else else public string select int index else if flag.value index else if flag.value index else publ...
二叉搜尋樹的增刪查改
在實際生產中,一棵二叉搜尋樹的平均深度是log n 所以通常是遞迴的編寫二叉樹的操作 不需要太擔心爆棧的問題。對二叉樹的所有操作,無非就是從根節點 左子樹 右子樹這三者中入手,分析基本的 可能的情況後,再遞迴的編寫相應的操作即可。我們的重點放在insert 操作和 delete 操作中。insert...