資料結構演算法爬坑日記十四

2021-10-23 23:23:14 字數 2405 閱讀 4995

二叉排序樹:對於二叉排序樹的任意乙個非葉子節點,它的左子節點的值比當前節點的值小,右子節點比當前節點的

值大(如果相同,放在左右均可,應盡量避免出現相同的值)

**實現

** 二叉排序樹節點類

//二叉排序樹節點

public

class

node

@override

public string tostring()

';}//新增節點

public

void

addnode

(node node)

//新增的節點值小於當前節點值,向左遞迴

if(node.value <

this

.value)

else

}else

else}}

//中序遍歷

public

void

mid(

) system.out.

println

(this);

if(this

.right!=null)

}//查詢要刪除的節點

public node findnode

(int value)

else

if(value <

this

.value &&

this

.left != null)

else

if(value >

this

.value &&

this

.right != null)

else

}//查詢要刪除的父節點

public node findparentnode

(int value)

elseif(

this

.left != null &&

this

.value > value)

elseif(

this

.right != null &&

this

.value < value)

else}}

** 二叉排序樹類

//二叉排序樹

public

class

binarysorttree

else

}//中序遍歷

public

void

midorder()

else

}//查詢要刪除的節點

public node findnode

(int value)

else

}//查詢要刪除節點的父節點

public node findparentnode

(int value)

else

}//查詢需要刪除的節點的右節點為根節點的最小值節點

public node delrightnode

(node node)

else

}//刪除節點

@suppresswarnings

("all"

)public

void

del(

int value)

//如果要刪除的節點就是根節點且根節點只有乙個子節點

//如果要刪除的節點為葉子節點

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

else

else}}

else

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

else

else

}else

if(node.right != null)}if

(parentnode.right == node)

if(node.right != null)}}

}}}*

* 測試類

public

class

binarysorttreetest

; binarysorttree binarysorttree =

newbinarysorttree()

;for

(int value : arr)

binarysorttree.

midorder()

;//刪除葉子節點

system.out.

println

("--------------");

binarysorttree.

del(2)

;// 依次測試7 1

binarysorttree.

midorder()

;}}

資料結構演算法爬坑日記一

線性結構 最常用的資料結構,特點是資料元素之間存在一對一的線性關係 分倆種儲存結構 1.順序儲存結構 又稱為順序表,儲存元素是連續的 2.鏈式儲存結構 又稱為鍊錶,儲存元素不一定是連續的,元素節點中存放資料元素以及相鄰元素的位址結構 常見線性資料結構 陣列 佇列 鍊錶 棧 非線性結構 常見二維陣列 ...

資料結構演算法爬坑日記六

回溯法 也叫向前試探法,試著尋找正確的求解,當探索到某一步不符合規則時,便回退到上一步進行重新選擇,直到獲取預期的解法 問題描述 在8 8的西洋棋棋盤上,放置八個皇后且八個皇后不能互相攻擊 思路 先將第乙個放在第一行第一列,然後將第二個放在第二行第一列,檢查是否滿足規則,如果滿足則進入第三個的放 置...

資料結構演算法爬坑日記八

思想 通過一次排序將一組資料分為兩部分,一部分全部比另一部分小,然後對兩部分分別再進行快排,迴圈此操作,直到不能再分割,便得到乙個有序序列 實現 快速排序 public class quicksort sort arr,0,arr.length 1 system.out.println arrays...