public
inte***ce
tree
comparable
<
?super t>>
node
(t t, node
left, node
right)
}void
makeempty()
;boolean
isempty()
;boolean
contain
(t t)
; t findmin()
; t findmax()
;void
insert
(t t)
;void
remove
(t t)
;void
printtree()
;}
介面中包含乙個靜態類node
作為節點資料。
暴露出三種型別的方法:
查詢類方法:contain
,findmin
,finmax
。
插入類方法:insert
刪除類方法:remove
還有乙個遍歷方法printtree
,在實現中採用了中序遍歷
public
class
mytree
comparable
<
?super t>>
implements
tree
public
mytree
(node
root)
@override
public
void
makeempty()
@override
public
boolean
isempty()
@override
public
boolean
contain
(t t)
private
boolean
contain
(t t, node
node)
int compararesult = t.
compareto
(node.data);if
(compararesult <0)
else
if(compararesult >0)
else
}@override
public t findmin()
private t findmin
(node
node)
else
}@override
public t findmax()
private t findmax
(node
node)
return node.data;
}@override
public
void
insert
(t t)
private node
insert
(t t, node
node)
int compararesult = t.
compareto
(node.data);if
(compararesult <0)
else
if(compararesult >0)
else
;return node;
}@override
public
void
remove
(t t)
private node
remove
(t t, node
node)
int compararesult = t.
compareto
(node.data);if
(compararesult <0)
else
if(compararesult >0)
else
if(node.left != null && node.right != null)
else
return node;
}@override
public
void
printtree()
else
}private
void
printtree
(node
node)
}}
public
class
mytreetest
system.out.
println
(arrays.
tostring
(array));
mytree.
printtree()
;}@test
public
void
testfindmin()
system.out.
println
(arrays.
tostring
(array));
system.out.
println
(mytree.
findmin()
);}@test
public
void
testfindmax()
system.out.
println
(arrays.
tostring
(array));
system.out.
println
(mytree.
findmax()
);}@test
public
void
testcontain()
system.out.
println
(arrays.
tostring
(array));
int arandomint =
createarandomint(-
50,50)
; system.out.
println
(mytree.
contain
(arandomint));
system.out.
println
(arandomint);}
@test
public
void
testremove()
system.out.
println
(arrays.
tostring
(array));
mytree.
printtree()
;int arandomint =
createarandomint(-
50,50)
;while
(!mytree.
contain
(arandomint)
) arandomint =
createarandomint(-
50,50)
; mytree.
remove
(arandomint)
; mytree.
printtree()
;}}
演算法學習 二叉樹
概念 樹中的元素叫做節點 連線相鄰的節點之間的關係叫父子關係 節點a節點是b節點的父節點,b節點是a節點的子節點。c,d單個節點的父節點是同乙個節點,所以他們互稱為兄弟節點 把沒有父節點的節點叫做根節點 沒有子節點的節點叫做葉子節點或者葉節點 樹節點的高度 節點到葉子節點的最長路徑 邊數 節點的深度...
演算法學習筆記 Trie 樹(字典樹)
2.3 trie 樹的適用範圍 3.總結 trie 樹,中文名為字典樹,是一種字串的高效處理演算法。trie 樹實現的功能就是快速的查詢一堆字串裡面有沒有某個串是另乙個串的字首,字尾等等。trie 樹首先是一棵樹,比如下面這棵樹就是一棵 trie 樹。這棵樹是由ab,abd,ac,bd四個字串構成的...
演算法學習 紅黑樹
1 紅黑樹是二叉收索樹的一種,可以保證在最壞情況系基本動態集合操作的時間複雜度為o lgn 本質是讓樹盡量均衡。紅黑樹的定義 紅黑樹是在二叉收索樹的基礎上加上了下面的條件 1 每個節點或是紅色的,或是黑色的。2 根節點和葉結點是黑色的。紅黑樹中將nil結點定義為也節點,稱為外部結點 把帶關鍵字的結點...