二叉樹的實現

2021-09-26 06:51:35 字數 2480 閱讀 5327

定義乙個類,用來當做二叉樹的節點,也可以用內部類

package datestructure;

public

class

tnode

}

下面是二叉樹的實現:比較難的是刪除,仔細琢磨。

package datestructure;

public

class

ithree

else

if(key < temp.date)

else

}return null;

}/**

* 插入新節點

* * 要插入節點,必須先找到插入的位置。 與查詢操作相似,由於二叉搜尋樹的特殊性, 待插入的節點也需要從根節點開始進行比較,

* 小於根節點則與根節點左子樹比較,反之則與右子樹比較, 直到左子樹為空或右子樹為空,則插入到相應為空的位置, 在比較的過程中要注意儲存父節點的資訊 及

* 待插入的位置是父節點的左子樹還是右子樹,才能插入到正確的位置。

* * @param key

* @return

*/public

boolean

insert

(int key)

tnode prenode = null;

tnode temp = root;

while

(temp != null)

}else}}

return

false;}

/** * 遍歷二叉樹

* * @param key

* @return

*/// 先序遍歷

public

void

infixorder

(tnode current)

}// 中序遍歷

public

void

preorder

(tnode current)

}// 後序遍歷

public

void

postorder

(tnode current)

}/**

* 查詢最值

* * 要找最小值,先找根的左節點, 然後一直找這個左節點的左節點, 直到找到沒有左節點的節點,那麼這個節點就是最小值。 同理要找最大值,一直找根節點的右節點,

* 直到沒有右節點,則就是最大值

* * @return

*/// 查詢最大值

public tnode findmax()

}return prenode;

}// 查詢最小值

public tnode findmin()

}return prenode;

}/**

* 刪除節點 刪除節點是二叉搜尋樹中最複雜的操作,

* 刪除的節點有三種情況,前兩種比較簡單,但是第三種卻很複雜。

* 1、該節點是葉節點(沒有子節點)

* 2、該節點有乙個子節點

* 3、該節點有兩個子節點

*/public

boolean

delete

(int key)

else

if(nextnode == null)

}//該節點是葉子結點

if(nextnode.leftchild == null && nextnode.rightchild == null)

else

return

true

;//該節點只有右結點

}else

if(nextnode.leftchild == null && nextnode.rightchild != null)

else

return

true

;//該節點只有左節點

}else

if(nextnode.leftchild != null && nextnode.rightchild == null)

else

return

true

;//該節點有兩個子節點

}else

else

successor.leftchild = nextnode.leftchild;

return

true;}

}//找到刪除節點的中序後繼元素

public tnode getsuccessor

(tnode delnode)

//後繼節點不是刪除節點的右子節點,將後繼節點替換刪除節點

if(successor != delnode.rightchild)

return successor;

}// other method......

public

static

void

main

(string[

] args)

}

二叉樹 排序二叉樹的簡單實現

二叉樹 排序二叉樹 include using namespace std 二叉樹的節點 date 資料 left 指向二叉樹的左子樹 right 指向二叉樹的右子樹 template struct node template class btree public btree root null c...

二叉樹實現

include include include include define maxsize 100 define ok 1 define error 0 define true 1 define false 0 typedef int status typedef int telemtype ty...

二叉樹實現

課內最近學了二叉樹,參考書上的 做了二叉樹的實現,尚不完善,還有很多地方不明白。二叉樹實現。define maxsize 100 include using namespace std 定義二叉樹節點 class btnode void createbt btnode bt,char str voi...