二叉樹排序的增刪

2021-10-03 10:38:57 字數 2487 閱讀 6713

1,二叉樹排序使用鍊錶鏈結生成的 主要在排序的過程需要進行判斷讓他在新增的時候有自己的方法 可以讓他查詢的時候比一般的鍊錶鏈結快再新增的時候比陣列也快

2,弊端是他的根節點是一開始就生成的 所以左右節點的wpl相差特別大 導致查詢會比普通單鏈表還慢(因為他會每次遞迴都會判斷有沒有左右節點帶去遞迴)這是就會出現平衡二叉樹 會在下張部落格寫出

3,開始擼**

//首先還是要有個節點 二叉樹有左右節點和自己的值

class

node

//尋找當前值的節點對比如果相同返回當前節點

//小於當前值先判斷有沒有左節點左遞迴

//大於當前值先判斷有沒有右節點右遞迴

public node search

(int value)

else

if(value <

this

.value)

return

this

.left.

search

(value);}

else

return

this

.right.

search

(value);}

}//要查詢當前值的父節點每次都要判斷當前節點的左右節點

//並且保證需要判斷的節點是否有值一樣返回當前值 小左遞迴 大右遞迴

public node searchparent

(int value)

else

else

if(value >=

this

.value &&

this

.right != null)

else}}

@override

public string tostring()

//新增節點

public

void

add(node node)

//判斷輸入進來的節點比當前節點小就去判斷他的左節點存在

//不存在給左節點新增值如果存在再去左遞迴去判斷

if(node.value <

this

.value)

else

//判斷輸入進來的節點比當前節點大就去判斷他的左節點存在

//不存在給左節點新增值如果存在再去右遞迴去判斷

}else

if(node.value >

this

.value)

else}}

//中序遍歷

public

void

infixorder()

system.out.

println

(this);

if(this

.right != null)

}}

class

binarysorttree

public node search

(int value)

else

}public node searchparent

(int value)

else

}public

intdelrighttreemin

(node node)

delnode

(target.value)

;return target.value;

}//各種判斷 簡單來講3部分

//1,是葉子節點就在父子節點的左右節點中刪除

//2,非葉子節點有乙個子節點就把子節點往上移動

//3,非葉子節點有兩個節點就左遞迴尋找最大值和要刪除的節點互換

public

void

delnode

(int value)

else

if(root.left == null && root.right == null)

node parent =

searchparent

(value);if

(targetnode.left == null && targetnode.right == null)

else

if(parent.right != null && parent.right.value == targetnode.value)

}else

if(targetnode.left != null && targetnode.right != null)

else

else

}else

}else

else

}else}}

}}//如果根節點為空就給他賦值如果不為空就呼叫add方法

public

void

add(node node)

else

}public

void

infixorder()

else

}}

二叉樹,排序二叉樹

說到二叉樹,這可是資料結構裡面的非常重要的一種資料結構,二叉樹是樹的一種,本身具有遞迴性質,所以基於二叉樹的一些演算法很容易用遞迴演算法去實現。作為一種非線性結構,比起線性結構還是相對複雜的,很多人甚至看不懂演算法的意思,不能理解。其實一開始接觸這些東西還是挺暈的,不過你多看幾遍,上機實現可能你就會...

排序二叉樹or搜尋二叉樹or查詢二叉樹

排序二叉樹,搜尋二叉樹,查詢二叉樹都是乙個意思,只是叫法不同而已。下面的文章中我們統稱為排序二叉樹。本文主要是針對高中資訊學,因此其中不涉及到指標,所有需要用指標的地方都直接使用陣列進行模擬。排序二叉樹定義 1 若左子樹不空,則左子樹上所有結點的值均小於或等於它的根結點的值 2 若右子樹不空,則右子...

排序二叉樹or搜尋二叉樹or查詢二叉樹

排序二叉樹,搜尋二叉樹,查詢二叉樹都是乙個意思,只是叫法不同而已。下面的文章中我們統稱為排序二叉樹。本文主要是針對高中資訊學,因此其中不涉及到指標,所有需要用指標的地方都直接使用陣列進行模擬。排序二叉樹定義 1 若左子樹不空,則左子樹上所有結點的值均小於或等於它的根結點的值 2 若右子樹不空,則右子...