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 若右子樹不空,則右子...