演算法學習02 樹 二 樹的簡單實現

2021-09-26 08:00:08 字數 3823 閱讀 3374

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作為節點資料。

暴露出三種型別的方法:

查詢類方法:containfindminfinmax

插入類方法: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結點定義為也節點,稱為外部結點 把帶關鍵字的結點...