/**
* BST树的节点类型
* @param <T>
*/
class BSTNode <T extends Comparable<T>>{
private T data; // 数据域
private BSTNode<T> left; // 左孩子域
private BSTNode<T> right; // 右孩子域
public BSTNode(T data, BSTNode<T> left, BSTNode<T> right) {
this.data = data;
this.left = left;
this.right = right;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
public BSTNode<T> getLeft() {
return left;
}
public void setLeft(BSTNode<T> left) {
this.left = left;
}
public BSTNode<T> getRight() {
return right;
}
public void setRight(BSTNode<T> right) {
this.right = right;
}
}
/**
* BST树的实现
* @param <T>
*/
class BST<T extends Comparable<T>>{
private BSTNode<T> root; // 指向根节点
/**
* BST树的初始化
*/
public BST() {
this.root = null;
}
/**
* 把BST树中,满足【bagin,end】区间所有的元素打印出来
* @param bagin
* @param end
*/
public void printAreaDatas(T bagin,T end){
PrintAreaDatas(root,bagin,end);
}
private void PrintAreaDatas(BSTNode<T> root, T bagin, T end) {
if (root == null){
return;
}
if (root.getData().compareTo(bagin) > 0){
PrintAreaDatas(root.getLeft(),bagin,end);
}
if (root.getData().compareTo(bagin) >= 0 &&
root.getData().compareTo(end)<= 0){
System.out.print(root.getData()+" ");
}
if (root.getData().compareTo(end) < 0){
PrintAreaDatas(root.getRight(),bagin,end);
}
}
}
二叉树的区间打印
最新推荐文章于 2023-04-02 15:29:53 发布