大家好,又见面了,我是你们的朋友全栈君。
Don’t say much, just go to the code.
package org.bood.tree;
/** * 二分查找树 * ps:如果 data[0] 等于一组数据中最小的,那么就会增加查找的时间复杂度。<br/> * 平衡二叉树(追求极致的平衡),现实需求很难满足,红黑数孕育而生 <br/> * * @author bood * @since 2020/10/16 */
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);
}
}
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/128209.html原文链接:https://javaforall.cn