Java实现二叉排序树
2023-09-14 09:13:18 时间
Java实现二叉排序树
1.源码如下:
- BinarySortTree类
package Util;
/*
1.实现二叉排序树
*/
public class BinarySortTree {
public Node addNode(Node root,int data){
Node node = new Node(data);
if(root == null){//第一次插入时,root必为空
root = node;//让root指向新new出来的node
return root;
}
Node temp = root;
Node pre = root;
int flag = -1;//左边为0,右边为1
while(temp != null){
if(temp.getData() == data) return root;//如果相等,则不插入
else if(temp.getData() > data){//如果当前的值大于插入的值,则遍历左子树
pre = temp;
temp = temp.getlChild();
flag = 0;
}
else{
pre = temp;
temp = temp.getrChild();//进入右子树
flag = 1;
}
}
//根据标志决定是往哪个子树添加值
if(flag == 0)
pre.setlChild(node);//指向node
if(flag == 1)
pre.setrChild(node);
flag = -1;
return root;
}
//中序遍历
//对于中序遍历,二叉排序树的输出有序数列
public void traverseBinarySortTree(Node root){
if(root.getlChild()!=null)//如果左孩子不为空
traverseBinarySortTree(root.getlChild());//先遍历左子树
System.out.println(root.getData());
if(root.getrChild()!=null)
traverseBinarySortTree(root.getrChild());
}
}
- Node类
package Util;
/**
* 1.节点类型
*/
class Node{
private int data;//二叉树中存储的是int型的数字
private Node lChild = null;//存储左指针【指向左孩子】
private Node rChild = null;//存储右指针【指向右孩子】
Node(int data){
this.data = data;//构造注入 data
}
Node(){
}
public int getData() {
return data;
}
public void setData(int data) {
this.data = data;
}
public Node getlChild() {
return lChild;
}
public void setlChild(Node lChild) {
this.lChild = lChild;
}
public Node getrChild() {
return rChild;
}
public void setrChild(Node rChild) {
this.rChild = rChild;
}
}
- Test类
public class Test{
public static void main(String[] args) {
BinarySorTree binarySorTree = new BinarySorTree();
Node node = null;
node = binarySorTree.addNode(node,4);
binarySorTree.addNode(node,2);
binarySorTree.addNode(node,5);
binarySorTree.addNode(node, 1);
binarySorTree.traverseBinarySortTree(node);
}
}
相关文章
- JAVA学习(三):Java基础语法(变量、常量、数据类型、运算符与数据类型转换)
- Java实现 LeetCode 792 自定义字符串排序(暴力)
- Java实现 LeetCode 792 自定义字符串排序(暴力)
- Java实现 LeetCode 791 自定义字符串排序(桶排序)
- Java实现 LeetCode 912 排序数组(用数组去代替排序O(N))
- Java实现 LeetCode 561 数组拆分 I(通过排序算法改写PS:难搞)
- Java实现 LeetCode 561 数组拆分 I(通过排序算法改写PS:难搞)
- Java实现高效便捷还容易懂的排序算法
- Java实现高效便捷还容易懂的排序算法
- Java实现 LeetCode 154 寻找旋转排序数组中的最小值 II(二)
- Java实现 LeetCode 34 在排序数组中查找元素的第一个和最后一个位置
- java实现第四届蓝桥杯快速排序
- Java实现预排序
- Java实现选择排序和冒泡排序
- Java实现 蓝桥杯VIP 算法提高 选择排序
- Java实现 蓝桥杯VIP 算法提高 选择排序
- Java实现 蓝桥杯VIP 算法提高 身份证排序
- Java实现 蓝桥杯VIP 算法提高 身份证排序
- 【JAVA】 03-Java中的异常和包的使用
- 七种经典排序算法及Java实现
- java算法 -- 快速排序
- 【JAVA】 04-Java中的多线程
- Atitit web httphandler的实现 java python node.js c# net php 目录 1.1. Java 过滤器 servelet1 1.2. Python的
- 1小时学会通过Java Swing Design设计java图形化
- 【java】Java生成微信小程序二维码
- java集合进行排序的两种方式
- Java如何获取IP属地 ip2region failed to create searcher with x:java.io.FileNotFoundException:( 系统找不到指定的路径)
- 【java】Java 封装
- 【Java 8 新特性】Java Comparator.reverseOrder | 倒序排序-静态方法