資料結構是不可避免的。資料結構作為基礎知識,在很多面試中都會涉及。所以掌握資料結構可能會給自己的面試成績加分。今天我編寫了乙個搜尋二叉樹。
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 ...
資料結構之二叉樹知識
樹是一種重要的非線性資料結構,直觀地看,它是資料元素 在樹中稱為結點 按分支關係組織起來的結構,很象自然界中的樹那樣。樹結構在客觀世界中廣泛存在,如人類社會的族譜和各種社會組織機構都可用樹形象表示。樹在計算機領域中也得到廣泛應用,如在編譯源程式如下時,可用樹表示源源程式如下的語法結構。又如在資料庫系...