最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java 二叉查找樹實例代碼

 更新時間:2017年03月20日 11:50:10   投稿:lqh  
這篇文章主要介紹了java 二叉查找樹實例代碼的相關(guān)資料,需要的朋友可以參考下

java 二叉查找樹實例代碼

1.左邊<中間<右邊

2.前序遍歷 左中右

3.中序遍歷 中左右

4.后序遍歷 左右中

public class BinaryTree {

  // 二叉樹的根節(jié)點
  public TreeNode rootNode ;
  // 記錄搜索深度
  public int count;

  /**
   * 利用傳入一個數(shù)組來建立二叉樹
   */
  public BinaryTree(int[] data) {
    for (int i = 0; i < data. length; i++) {
      addNodeToTree(data[i]);
    }
  }

  /**
   * 將指定的值加入到二叉樹中適當?shù)墓?jié)點
   */
  private void addNodeToTree(int value) {
    TreeNode currentNode = rootNode;
    // 建立樹根
    if (rootNode == null) {
      rootNode = new TreeNode(value);
      return;
    }

    // 建立二叉樹
    while (true) {
      // 新增的value比節(jié)點的value小,則在左子樹
      if (value < currentNode.value ) {
        if (currentNode.leftNode == null) {
          currentNode.leftNode = new TreeNode(value);
          return;
        } else {
          currentNode = currentNode.leftNode;
        }
      } else { // 新增的value比節(jié)點的value大,在右子樹
        if (currentNode.rightNode == null) {
          currentNode. rightNode = new TreeNode(value);
          return;
        } else {
          currentNode = currentNode. rightNode;
        }
      }
    }
  }

  /**
   * 中序遍歷(左子樹 -樹根- 右子樹)
   */
  public void inOrder(TreeNode node) {
    if (node != null) {
      inOrder(node. leftNode);
      System. out.print("[" + node.value + "]");
      inOrder(node. rightNode);
    }
  }

  /**
   * 前序遍歷(樹根 -左子樹- 右子樹)
   */
  public void preOrder(TreeNode node) {
    if (node != null) {
      System. out.print("[" + node.value + "]");
      preOrder(node. leftNode);
      preOrder(node. rightNode);
    }
  }

  /**
   * 后序遍歷(左子樹 -右子樹- 樹根)
   */
  public void postOrder(TreeNode node) {
    if (node != null) {
      postOrder(node. leftNode);
      postOrder(node. rightNode);
      System. out.print("[" + node.value + "]");
    }
  }

  /**
   * 從二叉樹中查找指定value
   */
  public boolean findTree(TreeNode node, int value) {
    if (node == null) {
      System. out.println("共搜索" + count + "次");
      return false;
    } else if (node.value == value) {
      System. out.println("共搜索" + count + "次");
      return true;
    } else if (value < node.value) {
      count++;
      return findTree(node.leftNode , value);
    } else {
      count++;
      return findTree(node.rightNode , value);
    }
  }

  /**
   * 利用中序遍歷進行排序
   */
  public void sort() {
    this.inOrder(rootNode );
  }

  class TreeNode {
    int value ;
    TreeNode leftNode;
    TreeNode rightNode;

    public TreeNode(int value) {
      this.value = value;
      this.leftNode = null;
      this.rightNode = null;
    }
  }

  public static void main(String[] args) {
    int[] content = { 50, 35, 27, 45, 40, 48, 78, 56, 90 };

    BinaryTree tree = new BinaryTree(content);
    System. out.println("前序遍歷:" );
    tree.preOrder(tree. rootNode);
    System. out.println("\n中序遍歷:" );
    tree.inOrder(tree. rootNode);
    System. out.println("\n后序遍歷:" );
    tree.postOrder(tree. rootNode);

    System. out.println("\n\n開始搜索:" );
    boolean isFind = tree.findTree(tree.rootNode, 48);
    System. out.println("是否搜索到" + 48 + ":" + isFind);

    System. out.println("\n進行排序:" );
    tree.sort();
  }
}

前序遍歷:

[50][35][27][45][40][48][78][56][90]

中序遍歷:

[27][35][40][45][48][50][56][78][90]

后序遍歷:

[27][40][48][45][35][56][90][78][50]

開始搜索:

共搜索3次

是否搜索到48:true

進行排序:

[27][35][40][45][48][50][56][78][90]

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • 如何使用Mockito調(diào)用靜態(tài)方法和void方法

    如何使用Mockito調(diào)用靜態(tài)方法和void方法

    這篇文章主要介紹了如何使用Mockito調(diào)用靜態(tài)方法和void方法的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 基于Eclipce配置Spring Boot過程圖解

    基于Eclipce配置Spring Boot過程圖解

    這篇文章主要介紹了基于Eclipce配置Spring Boot過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • SpringBoot+Prometheus+Grafana實現(xiàn)應用監(jiān)控和報警的詳細步驟

    SpringBoot+Prometheus+Grafana實現(xiàn)應用監(jiān)控和報警的詳細步驟

    這篇文章主要介紹了SpringBoot+Prometheus+Grafana實現(xiàn)應用監(jiān)控和報警的詳細步驟,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • SpringCloud中的Feign服務間的調(diào)用詳解

    SpringCloud中的Feign服務間的調(diào)用詳解

    這篇文章主要介紹了SpringCloud中的Feign服務間的調(diào)用詳解,Feign 是一個聲明式的 REST 客戶端,它能讓 REST 調(diào)用更加簡單,Feign 供了 HTTP 請求的模板,通過編寫簡單的接口和插入注解,就可以定義好 HTTP 請求的參數(shù)、格式、地址等信息,需要的朋友可以參考下
    2024-01-01
  • SpringMVC對日期類型的轉(zhuǎn)換示例

    SpringMVC對日期類型的轉(zhuǎn)換示例

    本篇文章主要介紹了SpringMVC對日期類型的轉(zhuǎn)換示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • 詳解如何使用IntelliJ IDEA新建一個Servlet項目

    詳解如何使用IntelliJ IDEA新建一個Servlet項目

    這篇文章主要介紹了詳解如何使用IntelliJ IDEA新建一個Servlet項目,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • Mybatis自定義typeHandle過程解析

    Mybatis自定義typeHandle過程解析

    這篇文章主要介紹了Mybatis自定義typeHandle過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • springboot登陸頁面圖片驗證碼簡單的web項目實現(xiàn)

    springboot登陸頁面圖片驗證碼簡單的web項目實現(xiàn)

    這篇文章主要介紹了springboot登陸頁面圖片驗證碼簡單的web項目實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-04-04
  • java中最大的整數(shù)用法分析

    java中最大的整數(shù)用法分析

    這篇文章主要介紹了java中最大的整數(shù)用法,結(jié)合具體實例形式分析了java計算類java.math.BigInteger具體使用技巧,需要的朋友可以參考下
    2017-06-06
  • 通過實踐了解如何處理Java異常

    通過實踐了解如何處理Java異常

    Java中的異常處理不是一個簡單的主題。初學者發(fā)現(xiàn)它很難理解,甚至有經(jīng)驗的開發(fā)者也可以花幾個小時討論如何以及應該拋出或處理哪些異常。下面我們通過實踐來了解如何解決異常
    2019-05-05

最新評論

宁夏| 札达县| 东城区| 尖扎县| 远安县| 芜湖县| 南木林县| 浦北县| 乌兰浩特市| 吉水县| 武功县| 新巴尔虎左旗| 黄冈市| 札达县| 牟定县| 常熟市| 石首市| 洛南县| 新源县| 大石桥市| 乐昌市| 贵州省| 个旧市| 威宁| 西青区| 华亭县| 巴楚县| 沙湾县| 漯河市| 沂水县| 长兴县| 南京市| 昌乐县| 定远县| 九台市| 内江市| 靖西县| 宝山区| 海淀区| 三门县| 廊坊市|