java中二叉排序樹的示例分析

這篇文章主要介紹了java中二叉排序樹的示例分析,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

創(chuàng)新互聯(lián)公司專注于網(wǎng)站建設(shè)|網(wǎng)站維護(hù)公司|優(yōu)化|托管以及網(wǎng)絡(luò)推廣,積累了大量的網(wǎng)站設(shè)計(jì)與制作經(jīng)驗(yàn),為許多企業(yè)提供了網(wǎng)站定制設(shè)計(jì)服務(wù),案例作品覆蓋成都門簾等行業(yè)。能根據(jù)企業(yè)所處的行業(yè)與銷售的產(chǎn)品,結(jié)合品牌形象的塑造,量身開發(fā)品質(zhì)網(wǎng)站。

     二叉排序樹:BST: (Binary Sort(Search) Tree), 對(duì)于二叉排序樹的 任何一個(gè)非葉子節(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)。

    比如針對(duì)前面的數(shù)據(jù){7, 3, 10, 12, 5, 1, 9} ,對(duì)應(yīng)的二叉排序樹為 :

java中二叉排序樹的示例分析

    代碼實(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中二叉排序樹的示例分析”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!

本文標(biāo)題:java中二叉排序樹的示例分析
URL鏈接:http://muchs.cn/article44/gpgphe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷推廣、小程序開發(fā)、微信公眾號(hào)、App設(shè)計(jì)網(wǎng)站設(shè)計(jì)公司、軟件開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)