關於二叉搜尋樹的一些整理

2021-10-24 02:28:44 字數 1551 閱讀 2333

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...