首先我們先了解下什麼是二叉樹:
在電腦科學中,二叉樹是每個結點最多有兩個子樹的樹結構。通常子樹被稱作「左子樹」(left subtree)和「右子樹」(right subtree)。二叉樹常被用於實現二叉查詢樹和二叉堆。
簡單來說就是乙個節點有最多有兩個孩子左孩子右孩子,最少可以沒有孩子,叫做葉子節點,這樣組成的數就叫做二叉樹
像這樣的樹:
1、插入
當插入一列數的時候如 5,8,22,10,1,3,83,46,0,89,-9,54,13我們按照節點比左孩子大,比右孩子小排列樹。
首先把5當作根節點,比較8比5大,放在8的有右節點上,8就是5的右孩子,22比5大,應該放在5的右節點,但是5的右孩子是8,所以22應該和8比較,22比8大放在8的右節點上,所22是8的右孩子,比較後得到的二叉樹為:
同理,左後得到的二叉樹為:
2、刪除
如上圖,如果想刪除節點22,則刪除後需要補充8的右節點,需要用22的左右節點補充,補充完後10,83還要是他的左右節點。
所以這個數一定比10大,比83小。即這個數為 22( 要刪除的節點) 的左節點的右子樹的最大值或者 22( 要刪除的節點)右節點的左子樹的最小值。即刪除後二叉樹為:
以下是 實現**:
package linklearn;
public class treenode
@override
public string tostring()
main函式:
package linklearn;
public class treebuild ;
treenode root = new treenode(a[0]);//陣列第乙個數設定為根節點
root.leftnode=null;
root.rightnode = null;
for(int i=1 ,length = a.length;i < length;i++)
system.out.println(root);
delete(root,83);
system.out.println(root);
search(root,8);
system.out.println(root); }
public static void insert(integer data, treenode node) else
}else else
} }
public static void delete(treenode root,integer a)
if(aa)else
}if(root.leftnode !=null&&root.rightnode ==null||root.leftnode ==null&&root.rightnode !=null)
else
} else else }}
elseelse }}
}}
public static void search(treenode root,integer a)
if(a對陣列進行插入刪除查詢操作後結果:
這是二叉樹的新增操作後**輸出:
節點[左節點=節點[左節點=節點[左節點=節點[左節點=null, 右節點=null, 值=-9], 右節點=null, 值=0], 右節點=節點[左節點=null, 右節點=null, 值=3], 值=1], 右節點=節點[左節點=null, 右節點=節點[左節點=節點[左節點=null, 右節點=節點[左節點=null, 右節點=null, 值=13], 值=10], 右節點=節點[左節點=節點[左節點=null, 右節點=節點[左節點=null, 右節點=null, 值=54], 值=46], 右節點=節點[左節點=null, 右節點=null, 值=89], 值=83], 值=22], 值=8], 值=5]
由此可以得到:如上的二叉樹。
二叉搜尋樹的增刪查改
在實際生產中,一棵二叉搜尋樹的平均深度是log n 所以通常是遞迴的編寫二叉樹的操作 不需要太擔心爆棧的問題。對二叉樹的所有操作,無非就是從根節點 左子樹 右子樹這三者中入手,分析基本的 可能的情況後,再遞迴的編寫相應的操作即可。我們的重點放在insert 操作和 delete 操作中。insert...
二叉樹排序的增刪
1,二叉樹排序使用鍊錶鏈結生成的 主要在排序的過程需要進行判斷讓他在新增的時候有自己的方法 可以讓他查詢的時候比一般的鍊錶鏈結快再新增的時候比陣列也快 2,弊端是他的根節點是一開始就生成的 所以左右節點的wpl相差特別大 導致查詢會比普通單鏈表還慢 因為他會每次遞迴都會判斷有沒有左右節點帶去遞迴 這...
二叉樹,排序二叉樹
說到二叉樹,這可是資料結構裡面的非常重要的一種資料結構,二叉樹是樹的一種,本身具有遞迴性質,所以基於二叉樹的一些演算法很容易用遞迴演算法去實現。作為一種非線性結構,比起線性結構還是相對複雜的,很多人甚至看不懂演算法的意思,不能理解。其實一開始接觸這些東西還是挺暈的,不過你多看幾遍,上機實現可能你就會...