您好,登錄后才能下訂單哦!
這篇文章主要介紹了java中二叉排序樹的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
二叉排序樹:BST: (Binary Sort(Search) Tree), 對于二叉排序樹的 任何一個非葉子節(jié)點(diǎn),要求 左子節(jié)點(diǎn)的值比當(dāng)前節(jié)點(diǎn)的值小, 右子節(jié)點(diǎn)的值比當(dāng)前節(jié)點(diǎn)的值大。
特別說明: 如果有相同的值,可以將該節(jié)點(diǎn)放在左子節(jié)點(diǎn)或右子節(jié)點(diǎn)。
比如針對前面的數(shù)據(jù){7, 3, 10, 12, 5, 1, 9} ,對應(yīng)的二叉排序樹為 :
代碼實(shí)現(xiàn):
package tree; public class BinarySortTreeDemo { public static void main(String[] args) { int[] arr= {7,3,10,12,5,1,9,2}; BinarySortTree binarySortTree = new BinarySortTree(); for (int i = 0; i < arr.length; i++) { binarySortTree.add(new Node(arr[i])); } binarySortTree.infixOrder(); } } //創(chuàng)建二叉樹 class BinarySortTree{ private Node root; public Node getRoot() { return root; } public void add(Node node) { if(root == null) { this.root = node;//如果root為空直接讓root指向node }else { this.root.add(node); } } // 中序遍歷 public void infixOrder() { if(root!=null) { root.infixOrder(); }else { System.out.println("二叉樹為空,不能遍歷"); } } } //創(chuàng)建結(jié)點(diǎn) class Node{ private int value; private Node left; private Node right; public Node(int value) { this.value = value; } @Override public String toString() { return "Node [value=" + value + "]"; } //添加結(jié)點(diǎn)的方法,遞歸的形式添加結(jié)點(diǎn),注意需要滿足二叉樹的要求 public void add(Node node) { if(node==null) { return; } //判斷傳入的結(jié)點(diǎn)的值,和當(dāng)前子樹的根節(jié)點(diǎn)的值比較 if(node.value<this.value) { if(this.left==null) {//如果當(dāng)前結(jié)點(diǎn)左子結(jié)點(diǎn)為null this.left= node; }else { //遞歸的向左子樹添加 this.left.add(node); } }else {//添加的結(jié)點(diǎn)的值大于當(dāng)前結(jié)點(diǎn)的值 if(this.right==null) { this.right=node; }else { //遞歸的向右子樹添加 this.right.add(node); } } } //中序遍歷 public void infixOrder() { if(this.left != null) { this.left.infixOrder(); } System.out.println(this); if(this.right!=null) { this.right.infixOrder(); } } }
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“java中二叉排序樹的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。