日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java程序二叉树_Java实现简单二叉树

發布時間:2024/9/30 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java程序二叉树_Java实现简单二叉树 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

B樹

即二叉搜索樹:

1.所有非葉子結點至多擁有兩個兒子(Left和Right);

2.所有結點存儲一個關鍵字;

3.非葉子結點的左指針指向小于其關鍵字的子樹,右指針指向大于其關鍵字的子樹;

如:

B樹的搜索,從根結點開始,如果查詢的關鍵字與結點的關鍵字相等,那么就命中;

否則,如果查詢關鍵字比結點關鍵字小,就進入左兒子;如果比結點關鍵字大,就進入

右兒子;如果左兒子或右兒子的指針為空,則報告找不到相應的關鍵字;

如果B樹的所有非葉子結點的左右子樹的結點數目均保持差不多(平衡),那么B樹

的搜索性能逼近二分查找;但它比連續內存空間的二分查找的優點是,改變B樹結構

(插入與刪除結點)不需要移動大段的內存數據,甚至通常是常數開銷;

如:

但B樹在經過多次插入與刪除后,有可能導致不同的結構:

右邊也是一個B樹,但它的搜索性能已經是線性的了;同樣的關鍵字集合有可能導致不同的

樹結構索引;所以,使用B樹還要考慮盡可能讓B樹保持左圖的結構,和避免右圖的結構,也就

是所謂的“平衡”問題;

實際使用的B樹都是在原B樹的基礎上加上平衡算法,即“平衡二叉樹”;如何保持B樹

結點分布均勻的平衡算法是平衡二叉樹的關鍵;平衡算法是一種在B樹中插入和刪除結點的

策略;

public class NodeTree {

int data; //根節點數據

NodeTree left; //左子樹

NodeTree right; //右子樹

public NodeTree() {

super();

}

public NodeTree(int data) { //實例化二叉樹

super();

this.data = data;

left=null;

right=null;

}

public void insert(NodeTree root,int data){

if(data>root.data){ //如果插入的節點大于跟節點

if(root.right==null){//如果右子樹為空,就插入,如果不為空就再創建一個節點

root.right=new NodeTree(data); //就把插入的節點放在右邊

}else{

this.insert(root.right, data);

}

}else{ //如果插入的節點小于根節點

if(root.left==null){ //如果左子樹為空,就插入,如果不為空就再創建一個節點

root.left=new NodeTree(data); //就把插入的節點放在左邊邊

}else{

this.insert(root.left, data);

}

}

}

}

public class NodeQuery {

public static void preOrder(NodeTree root) { // 先根遍歷

if (root != null) {

System.out.print(root.data + "-");

preOrder(root.left);

preOrder(root.right);

}

}

public static void inOrder(NodeTree root) { // 中根遍歷

if (root != null) {

inOrder(root.left);

System.out.print(root.data + "--");

inOrder(root.right);

}

}

public static void postOrder(NodeTree root) { // 后根遍歷

if (root != null) {

postOrder(root.left);

postOrder(root.right);

System.out.print(root.data + "---");

}

}

public static void main(String[] args) {

int[] array = {35,17,39,9,28,65,56,87};

NodeTree root = new NodeTree(array[0]); //創建二叉樹

for(int i=1;i

root.insert(root, array[i]); //向二叉樹中插入數據

}

System.out.println("先根遍歷:");

preOrder(root);

/* System.out.println();

System.out.println("中根遍歷:");

inOrder(root);

System.out.println();

System.out.println("后根遍歷:");

postOrder(root);*/

}

} 上面這個樹的實現,應該是最經典最簡單的了吧;

總結

以上是生活随笔為你收集整理的java程序二叉树_Java实现简单二叉树的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。