二叉查詢樹(binary search tree),(又:二叉搜尋樹,二叉排序樹)它或者是一棵空樹,或者是具有下列性質的二叉樹: 若它的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值; 若它的右子樹不空,則右子樹上所有結點的值均大於它的根結點的值; 它的左、右子樹也分別為二叉排序樹。
如果要刪除的節點是葉子節點 直接刪除,父節點對應子樹設為null
如果要刪除的節點只有乙個子樹,父節點指向當前節點的子樹。
如果要刪除的節點有2個子樹,則先找到當前節點的後繼節點,把後繼節點的值賦值給當前節點。刪除後繼節點,因為後繼節點肯定不會有2個子樹。
public
class
mybinaryseachtree
}public
mybinaryseachtree
(int data)
/** * 正常插入法
* @param data
*/public
void
insert
(int data)
else
while
(true
)else
if(pa == null && node.data < root.data)
if( node.data >= pa.data)
pa.right = node;
node.parent = pa;
node.position =
true
;break;}
else
if(node.data < pa.data )
pa.left = node;
node.parent = pa;
break;}
}}/** * 遞迴插入法
* @param root
* @param data
*/public
void
insert
(treenode root ,
int data)
insert
(root.right, data);}
else
insert
(root.left, data);}
}public treenode search
(treenode root ,
int data)
if( data > root.data)
else
if(data < root.data )
else
}private treenode findnextnode
(treenode node)
return parent;
}/**
* 9
* 7 11
* 5 8 10 16(x)
*2 6 12 24
* 19 26
* 20 28
* * 1.要刪除的結點是葉子結點 o(1)
* 2.要刪除的結點只有乙個子樹(左或者右)o(1)
* 3.要刪除的結點有兩顆子樹:找後繼結點,而且後繼結點的左子樹一定為空。
* *
* @param data
*/public
void
remove
(int data)
private
void
remove
(treenode node)
else}}
public
void
print()
private
void
show
(treenode node)
show
(node.left)
; system.out.
print
(node.data+
" ")
;show
(node.right);}
public
static
void
main
(string[
] args)
; mybinaryseachtree root =
newmybinaryseachtree
(data[0]
);//第乙個點作為跟結點
for(
int i =
1; i < data.length ; i ++
) root.
print()
; root.
remove(16
);system.out.
println
("刪除節點:"+16
);root.
print()
;}}
樹論 二叉搜尋樹
package com.redis.redandblack 特點 1.如果它的左子樹不為空,則左子樹上的節點值小於根節點 2.如果它的右子樹不為空,則右子樹上的節點值大於等於根節點 3.子樹同樣遵循以上兩點 只要一棵樹是二叉查詢樹,那麼中序遍歷一定是有序的 二叉查詢演算法?歸併排序 每一次分一半,最...
二叉搜尋樹 二叉搜尋樹
題目 二叉搜尋樹 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...
演算法框架之二叉樹擴充套件 二叉搜尋樹
二叉樹基礎遍歷 在上一章以解釋過 演算法框架之陣列 鍊錶 二叉樹 如何判斷兩棵二叉樹是否完全相同?先來道開胃菜 應該很好理解 一共會出現三種情況 空的情況 都空 乙個空 非空情況 遞迴 definition for listnode.function listnode val param root1...