Java基于二叉查找樹(shù)實(shí)現(xiàn)排序功能示例
本文實(shí)例講述了Java基于二叉查找樹(shù)實(shí)現(xiàn)排序功能。分享給大家供大家參考,具體如下:
/** * 無(wú)論排序的對(duì)象是什么,都要實(shí)現(xiàn)Comparable接口 * * @param <T> */ public class BinaryNode<T extends Comparable<T>> { private static int index = 0; // 排序下標(biāo) private static int len = 0; // 最大數(shù)組長(zhǎng)度 private T t; // 根節(jié)點(diǎn) private BinaryNode<T> left; // 左側(cè)葉子節(jié)點(diǎn) private BinaryNode<T> right; // 右側(cè)葉子節(jié)點(diǎn) public BinaryNode(T t) { len++; this.t = t; } /** * 往一顆書(shū)中插入值,在本質(zhì)上都通過(guò)根節(jié)點(diǎn)一層層的判斷。 * 如果根節(jié)點(diǎn)不存在則新建節(jié)點(diǎn) * 如果根節(jié)點(diǎn)存在則判斷應(yīng)該在左側(cè)還是在右側(cè)插入,通常是左小右大 * * @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; } /** * 利用中序遍歷查找整顆樹(shù) * * @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); } } }
更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
- java二叉查找樹(shù)的實(shí)現(xiàn)代碼
- java 二叉查找樹(shù)實(shí)例代碼
- 詳解Java二叉排序樹(shù)
- Java的二叉樹(shù)排序以及遍歷文件展示文本格式的文件樹(shù)
- Java中二叉樹(shù)數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)示例
- 圖解紅黑樹(shù)及Java進(jìn)行紅黑二叉樹(shù)遍歷的方法
- java使用歸并刪除法刪除二叉樹(shù)中節(jié)點(diǎn)的方法
- Java實(shí)現(xiàn)求二叉樹(shù)的深度和寬度
- JAVA 實(shí)現(xiàn)二叉樹(shù)(鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu))
- Java 實(shí)現(xiàn)二叉搜索樹(shù)的查找、插入、刪除、遍歷
- java實(shí)現(xiàn)二叉樹(shù)的創(chuàng)建及5種遍歷方法(總結(jié))
- 圖解二叉樹(shù)的三種遍歷方式及java實(shí)現(xiàn)代碼
相關(guān)文章
淺談Java中的interface應(yīng)用與面向接口編程
這篇文章主要介紹了淺談Java中的interface應(yīng)用與面向接口編程,Java的關(guān)鍵字interface應(yīng)用,一個(gè)接口,多個(gè)實(shí)現(xiàn)類,面向接口編程,把業(yè)務(wù)邏輯線提取出來(lái)作為接口,具體的業(yè)務(wù)實(shí)現(xiàn)通過(guò)該接口的實(shí)現(xiàn)類來(lái)完成,需要的朋友可以參考下2023-10-10Java Cache詳解及簡(jiǎn)單實(shí)現(xiàn)
這篇文章主要介紹了 Java Cache詳解及簡(jiǎn)單實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下2017-02-02SpringBoot請(qǐng)求參數(shù)傳遞與接收說(shuō)明小結(jié)
這篇文章主要介紹了SpringBoot請(qǐng)求參數(shù)傳遞與接收,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-12-12使用?EasyCode生成springboot+mybatis基礎(chǔ)程序的實(shí)現(xiàn)示例
本文主要介紹了使用?EasyCode生成springboot+mybatis基礎(chǔ)程序的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01解決springcloud啟動(dòng)時(shí)報(bào)錯(cuò)Connection refused:connect問(wèn)題
這篇文章主要介紹了解決springcloud啟動(dòng)時(shí)報(bào)錯(cuò)Connection refused:connect問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05JDBC利用C3P0數(shù)據(jù)庫(kù)連接池連接數(shù)據(jù)庫(kù)
這篇文章主要為大家詳細(xì)介紹了JDBC利用C3P0數(shù)據(jù)庫(kù)連接池連接數(shù)據(jù)庫(kù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08