欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java基于二叉查找樹(shù)實(shí)現(xiàn)排序功能示例

 更新時(shí)間:2017年08月24日 12:07:23   作者:冷豪  
這篇文章主要介紹了Java基于二叉查找樹(shù)實(shí)現(xiàn)排序功能,結(jié)合實(shí)例形式分析了Java二叉查找樹(shù)的定義、遍歷及排序等相關(guā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ì)有所幫助。

相關(guān)文章

  • java多線程編程之使用Synchronized塊同步變量

    java多線程編程之使用Synchronized塊同步變量

    我們可以通過(guò)synchronized塊來(lái)同步特定的靜態(tài)或非靜態(tài)方法。要想實(shí)現(xiàn)這種需求必須為這些特性的方法定義一個(gè)類變量,然后將這些方法的代碼用synchronized塊括起來(lái),并將這個(gè)類變量作為參數(shù)傳入synchronized塊
    2014-01-01
  • Java數(shù)據(jù)類型超詳細(xì)示例講解

    Java數(shù)據(jù)類型超詳細(xì)示例講解

    Java程序中要求參與的計(jì)算的數(shù)據(jù),必須要保證數(shù)據(jù)類型的一致性,如果數(shù)據(jù)類型不一致將發(fā)生類型的轉(zhuǎn)換。本文將通過(guò)示例詳細(xì)說(shuō)說(shuō)Java中數(shù)據(jù)類型的轉(zhuǎn)換,感興趣的可以了解一下
    2022-11-11
  • 淺談Java中的interface應(yīng)用與面向接口編程

    淺談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-10
  • Java Cache詳解及簡(jiǎn)單實(shí)現(xiàn)

    Java Cache詳解及簡(jiǎn)單實(shí)現(xiàn)

    這篇文章主要介紹了 Java Cache詳解及簡(jiǎn)單實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • mybatis foreach標(biāo)簽的使用詳解

    mybatis foreach標(biāo)簽的使用詳解

    這篇文章主要介紹了mybatis foreach標(biāo)簽的使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • SpringBoot請(qǐng)求參數(shù)傳遞與接收說(shuō)明小結(jié)

    SpringBoot請(qǐng)求參數(shù)傳遞與接收說(shuō)明小結(jié)

    這篇文章主要介紹了SpringBoot請(qǐng)求參數(shù)傳遞與接收,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • SpringBoot中的自動(dòng)裝配原理解析

    SpringBoot中的自動(dòng)裝配原理解析

    這篇文章主要介紹了SpringBoot中的自動(dòng)裝配原理解析,自動(dòng)裝配就是指 Spring 容器在不使用<constructor-arg>和<property>標(biāo)簽的情況下,可以自動(dòng)裝配(autowire)相互協(xié)作的Bean之間的關(guān)聯(lián)關(guān)系,將一個(gè) Bean注入其他Bean的Property中,需要的朋友可以參考下
    2023-08-08
  • 使用?EasyCode生成springboot+mybatis基礎(chǔ)程序的實(shí)現(xiàn)示例

    使用?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)題

    這篇文章主要介紹了解決springcloud啟動(dòng)時(shí)報(bào)錯(cuò)Connection refused:connect問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • JDBC利用C3P0數(shù)據(jù)庫(kù)連接池連接數(shù)據(jù)庫(kù)

    JDBC利用C3P0數(shù)據(jù)庫(kù)連接池連接數(shù)據(jù)庫(kù)

    這篇文章主要為大家詳細(xì)介紹了JDBC利用C3P0數(shù)據(jù)庫(kù)連接池連接數(shù)據(jù)庫(kù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08

最新評(píng)論