知識布局 資料結構 搜尋二叉樹

2021-08-13 03:26:36 字數 2828 閱讀 8815

資料結構是不可避免的。資料結構作為基礎知識,在很多面試中都會涉及。所以掌握資料結構可能會給自己的面試成績加分。今天我編寫了乙個搜尋二叉樹。

1.樹的節點

2.操作型別

3.樹的實現

4.總結

public

class treenode

public

void

setdata(int data)

public treenode getleftnode()

public

void

setleftnode(treenode leftnode)

public treenode getrightnode()

public

void

setrightnode(treenode rightnode)

}

這個操作介面就是我們二叉樹支援的操作。支援插入、刪除、查詢。暫時不支援遍歷。

/**

* created by impala on 2017/12/7.

*/public

inte***ce

operator

/**

* created by impala on 2017/12/7.

* *@author forideal

*/public

class

binarysearchtree

implements

operator

@override

public

boolean

insert(int data) else

current = current.getrightnode();

} else

if (data == current.getdata()) else

current = current.getleftnode();}}

}return

true;

}@override

public treenode search(int data)

treenode currentnode = rootnode;

while (currentnode != null) else

if (data < currentnode.getdata()) else

}return

null;

}@override

public

boolean

delete(int data)

//1.尋找需要刪除的節點資訊

treenode currentnode = rootnode;

treenode parentnode = null;

treenode targetnode = null;

boolean isparentleftchildnode = false;

while (currentnode != null) else

if (data < currentnode.getdata()) else

}//2.目標刪除節點不存在

if (targetnode == null)

//3.目標刪除節點是根節點

if (parentnode == null)

}rootnode = rootnode.getrightnode();

return

true;

}//4.目標刪除節點不是跟節點

先把target節點的左子節點拼接到右子節點上面

treenode leftchildnode = targetnode.getleftnode();

treenode rightchildnode = targetnode.getrightnode();

treenode rightcur = rightchildnode;

treenode rightparent = null;

while (rightcur != null)

}將剛剛拼接好的節點拼接到之前的樹上

if (isparentleftchildnode)

}parentnode.setleftnode(null);

return

true;

} else

}public

static

void

main(string args)

treenode node = binarysearchtree.search(3);

if (node == null) else

binarysearchtree.delete(3);

binarysearchtree.delete(4);

binarysearchtree.delete(6);

node = binarysearchtree.search(3);

if (node == null) else

node = binarysearchtree.search(4);

if (node == null) else

node = binarysearchtree.search(6);

if (node == null) else

binarysearchtree.delete(888);

for (int i = 10; i < 100000; i++) }}

}

說句真心話,學習資料結構,最好能夠自己動手寫乙個自己的實現。這樣學習的效果會好一些。

資料結構 搜尋二叉樹

它要麼是一顆空樹,要麼是具有以下性質的一顆樹 1 每個節點都有乙個作為搜尋依據的關鍵碼 key 並且每個關鍵碼都不相同 2 左子樹上的所有節點的關鍵碼都小於根節點的關鍵碼 3 右子樹上的所有節點的關鍵碼都大於根節點的關鍵碼 4 左右子樹都是搜尋二叉樹 由於它亦是乙個二叉樹,所以一些拷貝構造,析構等的...

資料結構 搜尋二叉樹

手寫實現搜尋二叉樹 class treenode treenode left son null treenode right son null treenode p null 一定儲存雙親的指標 intvalue 0 bool treeinsert treenode proot,int value ...

資料結構之二叉樹知識

樹是一種重要的非線性資料結構,直觀地看,它是資料元素 在樹中稱為結點 按分支關係組織起來的結構,很象自然界中的樹那樣。樹結構在客觀世界中廣泛存在,如人類社會的族譜和各種社會組織機構都可用樹形象表示。樹在計算機領域中也得到廣泛應用,如在編譯源程式如下時,可用樹表示源源程式如下的語法結構。又如在資料庫系...