二分搜尋樹的中序遍歷結果是順序的
package tree;
//具有可比性的泛型
public
class
bstcomparable
>
}private node root;
private
int size;
public
bst(
)public
intsize()
public
boolean
isempty()
// 向二分搜尋樹中新增新的元素
// public void add(e e)else
// }
//向以node為根的二分搜尋樹中插入元素 遞迴演算法
// private void add(node node,e e)
// else if (e.compareto(node.e)>0&&node.right==null)
// if (e.compareto(node.e)<0)else
// add(node.right,e);
// }
public
void
add(e e)
private node add
(node node, e e)
if(e.
compareto
(node.e)
<0)
else
if(e.
compareto
(node.e)
>0)
return node;
}// 是否包含某個節點
public
boolean
contains
(e e)
private
boolean
contains
(node node, e e)
if(e.
compareto
(node.e)==0
)else
if(e.
compareto
(node.e)
<0)
else
}//遍歷
//先序遍歷根左右
public
void
proorder()
private
void
preorder
(node node)
system.out.
println
(node.e)
;preorder
(node.left)
;preorder
(node.right);}
//中序遍歷
public
void
inorder()
private
void
inorder
(node node)
@override
public string tostring()
// 以node為根節點,深度為depth描述二叉樹的字串
private
void
generatebststring
(node node,
int depth,stringbuilder stringbuilder)
stringbuilder.
(generatebststring
(depth)
+ node.e +
"\n");
generatebststring
(node.left, depth +
1, stringbuilder)
;generatebststring
(node.right, depth +
1, stringbuilder);}
private string generatebststring
(int depth)
return stringbuilder.
tostring()
;}public
static
void
main
(string[
] args)
;for
(int num : nums)
/** * 5
* 3 6
* 2 4 8**/
// bst.proorder();
// system.out.println();
// system.out.println(bst);
bst.
inorder()
; system.out.
println()
;}}
二分搜尋樹5 廣度優先遍歷(層序遍歷)
引入佇列的概念 將28入隊,佇列不為空,將隊首28元素取出,輸出,將其左右兩個節點入隊 16 30 將隊首16元素取出,輸出,將其左右兩個節點入隊 30 13 22 將隊首30元素取出,輸出,將其左右兩個節點入隊 13 22 29 42 迴圈這樣的操作,直到隊列為空 結果 28 16 30 13 2...
二分搜尋樹的遍歷
對於一棵二叉樹來說,如果我們想要把這棵樹中的所有節點都給遍歷一遍,那麼我們就需要了解二叉樹的遍歷方式。二叉樹的遍歷方式分為以下三種 二叉樹的乙個簡單的結構如下圖所示 對於其中的 前 中 後 我們都可以理解為是根節點的訪問順序。遍歷時,我們分為三個階段 前 中 後 對於前序遍歷來說 也就是在前階段訪問...
二分搜尋樹的遍歷
遍歷 訪問二分搜尋樹的每乙個元素。深度優先遍歷 每乙個,節點訪問三次。第一次訪問節點的時候最數進行操作。public void preorder 前序遍歷以node為根的二分搜尋樹,遞迴 private void preorder node node public string tostring 生...