bst(binary search tree)目的是為了提高查詢的效能,其查詢在平均和最壞的情況下都是logn級別,接近二分查詢。
其特點是:每個節點的值大於其任意左側子節點的值,小於其任意右節點的值。
//節點定義
private
class
node}*
public
class
treenode
*treenode
(int val)
*treenode
(int val, treenode left, treenode right)
*}
//成員變數如下:
private node root;
private
int size;
//初始化二叉樹,定義根節點為空,元素個數為零
public
bst(
)//向二分搜尋樹中新增元素
//以node為根的二分搜尋樹中插入元素e,遞迴實現
//不管左右孩子是否為空,都可以作為乙個二叉樹
//只不過空的就是空的二叉樹,這時就可以一直判斷,知道下一節點為空,就建立乙個節點返回,
private node add
(node node, e e)
//遞迴呼叫,已經有的元素不做操作
if(e.
compareto
(node.e)
<0)
node.left =
add(node.left,e);if
(e.compareto
(node.e)
>0)
node.right =
add(node.right,e)
;//返回最終以node為根節點的二叉樹
return node;
}
前序、中序、後序
深度優先搜尋(dfs)是從根延伸到某一片葉子,然後再返回另乙個分支。根據根節點,左節點,右節點的相對順序。
廣度優先搜尋(bfs)是逐層,從上到下掃瞄整個樹。
//前序遍歷
public
void
preorder()
//遞迴遍歷
private
void
preorder
(node node)
//中序遍歷
public
void
inorder()
private
void
inorder
(node node)
//層序遍歷
public
void
levelorder()
}}
二叉搜尋樹 二叉搜尋樹
題目 二叉搜尋樹 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...
關於二叉樹的一些簡單理解
二叉樹為非線性資料結構 可以用鍊錶或者陣列來表示 鍊錶 data 本節點資料 left 左子節點 right 右子節點 陣列 1 2 3 4 5 7 放到陣列裡可表示為 1 2 3 4 5 7 中間空一位,因為3沒有左子節點 若每乙個子葉都有結構 叫滿二叉樹 若節點下標 與陣列表示下標相吻合 則可稱...
關於二叉樹的一些問題
tips 關於二叉樹的絕大多數問題都可以用遞迴方法來實現,dfs。一位二叉樹根節點去掉之後又分為兩個子樹,對於子樹本身也可以看左二叉樹來處理。所以遞迴可以說很好用了 二叉樹的建立 public class bittree public bittree int data public static b...