Java基于二叉查找樹實現(xiàn)排序功能示例
更新時間:2017年08月24日 12:07:23 作者:冷豪
這篇文章主要介紹了Java基于二叉查找樹實現(xiàn)排序功能,結合實例形式分析了Java二叉查找樹的定義、遍歷及排序等相關操作技巧,需要的朋友可以參考下
本文實例講述了Java基于二叉查找樹實現(xiàn)排序功能。分享給大家供大家參考,具體如下:
/**
* 無論排序的對象是什么,都要實現(xiàn)Comparable接口
*
* @param <T>
*/
public class BinaryNode<T extends Comparable<T>> {
private static int index = 0; // 排序下標
private static int len = 0; // 最大數(shù)組長度
private T t; // 根節(jié)點
private BinaryNode<T> left; // 左側葉子節(jié)點
private BinaryNode<T> right; // 右側葉子節(jié)點
public BinaryNode(T t) {
len++;
this.t = t;
}
/**
* 往一顆書中插入值,在本質(zhì)上都通過根節(jié)點一層層的判斷。
* 如果根節(jié)點不存在則新建節(jié)點
* 如果根節(jié)點存在則判斷應該在左側還是在右側插入,通常是左小右大
*
* @param t
*/
public void insert(T t) {
if (this.t.compareTo(t) > 0) {
if (this.left == null) {
BinaryNode<T> node = new BinaryNode<T>(t);
this.left = node;
} else {
this.left.insert(t);
}
} else {
if (this.right == null) {
BinaryNode<T> node = new BinaryNode<T>(t);
this.right = node;
} else {
this.right.insert(t);
}
}
}
/**
* 調(diào)用私有方法
*
* @return
*/
public Comparable<?>[] order() {
Comparable<?>[] os = new Comparable[len];
order(this, os);
return os;
}
/**
* 利用中序遍歷查找整顆樹
*
* @param bn
* @param os
*/
private void order(BinaryNode<T> bn, Comparable<?>[] os) {
if (bn.left == null) {
os[index++] = bn.t;
} else {
order(bn.left, os);
os[index++] = bn.t;
}
if (bn.right == null) {
return;
} else {
order(bn.right, os);
}
}
}
更多關于java算法相關內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結構與算法教程》、《Java操作DOM節(jié)點技巧總結》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設計有所幫助。
您可能感興趣的文章:
相關文章
使用?EasyCode生成springboot+mybatis基礎程序的實現(xiàn)示例
本文主要介紹了使用?EasyCode生成springboot+mybatis基礎程序的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-01-01
解決springcloud啟動時報錯Connection refused:connect問題
這篇文章主要介紹了解決springcloud啟動時報錯Connection refused:connect問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05
JDBC利用C3P0數(shù)據(jù)庫連接池連接數(shù)據(jù)庫
這篇文章主要為大家詳細介紹了JDBC利用C3P0數(shù)據(jù)庫連接池連接數(shù)據(jù)庫,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-08-08

