package com.bood.algorithm;
/**
* 二分查找樹 <br/>
* ps:如果data[0]等於一組數據中最小的,那麼就會增加查找的時間複雜度。<br/>
* 平衡二叉樹(追求極致的平衡),現實需求很難滿足,紅黑數孕育而生 <br/>
*
* @author:bood
* @since:2020/3/6
*/
public class BinarySearchTree {
/**
* 根節點數
*/
int data;
/**
* 左邊的數
*/
BinarySearchTree left;
/**
* 右邊的數
*/
BinarySearchTree rigth;
public BinarySearchTree(int data) {
this.data = data;
this.left = null;
this.rigth = null;
}
// 二分查找
public void insert(BinarySearchTree root, int data) {
// 數大於根節點數,右邊
if (data > root.data) {
// 右邊是空的直接插入
if (null == root.rigth) {
root.rigth = new BinarySearchTree(data);
} else {
insert(root.rigth, data);
}
// 數大於根節點數,左邊
} else {
// 左邊是空的直接插入
if (null == root.left) {
root.left = new BinarySearchTree(data);
} else {
insert(root.left, data);
}
}
}
// 中序遍歷
public void in(BinarySearchTree root) {
if (null != root) {
in(root.left);
System.out.print(root.data + " ");
in(root.rigth);
}
}
public static void main(String[] args) {
// 模擬測試數據
int[] data = {5, 6, 1, 7, 8, 9, 2, 4, 10};
BinarySearchTree root = new BinarySearchTree(data[0]);
// 算法校驗
for (int i = 0; i < data.length; i++) {
root.insert(root, data[i]);
}
System.out.println("中序遍歷:");
root.in(root);
}
}
算法:《二分查找樹》
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.