二叉搜尋樹是一種特殊的二叉樹,treeset,treemap的底層實現結構
1)根節點的左子樹的值都比根節點的值小
2)根節點的右子樹的值都比根節點的值大
中序遍歷二叉搜尋樹,得到的是乙個有序序列
最核心的用途:用來查詢元素
3.二叉樹的操作:查詢,插入,刪除
}//根節點,root為空的時候表示這是個空樹
private node root = null;
public node find
(int key)
else
if(key > cur.key)
else
}//迴圈結束之後也沒找到,key就不存在
先找到待插入元素的合適位置,再插入元素
//二叉搜尋樹中不允許存在相同的key的元素
//如果發現新插入的key重複了,那就插入失敗,返回false
//插入成功返回true
public
boolean
insert
(int key)
//和查詢類似,需要先找到合適的位置,再去插入元素
node cur = root;
node parent = null;
//parent始終指向cur的父節點
while
(cur != null)
else
if(key > cur.key)
else
}//迴圈結束的時候,cur就指向null,當前元素就要插入到parent的子樹位置上
//再比較看是插入到左子樹還是右子樹
if(key < parent.key)
else
return
true
;}
需要考慮多種情況
//迴圈結束時,scopegoat指向了右子樹中的最小值
//2)把剛才找到的替罪羊的值賦給待刪除結點
cur.key=scopegoat.key;
//3)刪除替罪羊結點
//替罪羊結點一定沒有左子樹(和情況a,b類似)
二叉搜尋樹 二叉搜尋樹
題目 二叉搜尋樹 time limit 2000 1000 ms j a others memory limit 32768 32768 k j a others total submission s 6945 accepted submission s 3077 problem descripti...
二叉搜尋樹 修剪二叉搜尋樹
第一反應是重構,看來別人的解答發現,其實不用重構那麼複雜。treenode trimbst treenode root,int low,int high if root val high 下一層處理完左子樹的結果賦給root left,處理完右子樹的結果賦給root right。root left ...
樹 二叉樹 二叉搜尋樹
給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。假設乙個二叉搜尋樹具有如下特徵 節點的左子樹只包含小於當前節點的數。節點的右子樹只包含大於當前節點的數。所有左子樹和右子樹自身必須也是二叉搜尋樹。示例 1 輸入 2 13輸出 true 示例 2 輸入 5 14 3 6輸出 false 解釋 輸入為 ...