全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

java 二叉查找树实例代码

java 二叉查找树实例代码

1.左边<中间<右边

2.前序遍历 左中右

3.中序遍历 中左右

4.后序遍历 左右中

public class BinaryTree {

  // 二叉树的根节点
  public TreeNode rootNode ;
  // 记录搜索深度
  public int count;

  /**
   * 利用传入一个数组来建立二叉树
   */
  public BinaryTree(int[] data) {
    for (int i = 0; i < data. length; i++) {
      addNodeToTree(data[i]);
    }
  }

  /**
   * 将指定的值加入到二叉树中适当的节点
   */
  private void addNodeToTree(int value) {
    TreeNode currentNode = rootNode;
    // 建立树根
    if (rootNode == null) {
      rootNode = new TreeNode(value);
      return;
    }

    // 建立二叉树
    while (true) {
      // 新增的value比节点的value小,则在左子树
      if (value < currentNode.value ) {
        if (currentNode.leftNode == null) {
          currentNode.leftNode = new TreeNode(value);
          return;
        } else {
          currentNode = currentNode.leftNode;
        }
      } else { // 新增的value比节点的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]

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# java  # 二叉查找树  # 二叉查找树实例代码  # 二叉树  # java二叉查找树的实现代码  # 详解Java二叉排序树  # Java的二叉树排序以及遍历文件展示文本格式的文件树  # Java中二叉树数据结构的实现示例  # 图解红黑树及Java进行红黑二叉树遍历的方法  # java使用归并删除法删除二叉树中节点的方法  # Java实现求二叉树的深度和宽度  # JAVA 实现二叉树(链式存储结构)  # Java 实现二叉搜索树的查找、插入、删除、遍历  # java实现二叉树的创建及5种遍历方法(总结)  # 图解二叉树的三种遍历方式及java实现代码  # Java基于二叉查找树实现排序功能示例  # 子树  # 遍历  # 希望能  # 谢谢大家  # 则在  # length  # addNodeToTree  # data  # int  # count  # private  # return  # true  # TreeNode  # void  # currentNode  # null  # rootNode  # strong 


相关文章: css网站制作参考文献有哪些,易聊怎么注册?  如何快速启动建站代理加盟业务?  如何零基础在云服务器搭建WordPress站点?  建站之星如何通过成品分离优化网站效率?  如何高效利用200m空间完成建站?  专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?  网站设计制作公司地址,网站建设比较好的公司都有哪些?  Android滚轮选择时间控件使用详解  c# await 一个已经完成的Task会发生什么  ppt制作免费网站有哪些,ppt模板免费下载网站?  建站之星导航菜单设置与功能模块配置全攻略  商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?  潍坊网站制作公司有哪些,潍坊哪家招聘网站好?  如何在七牛云存储上搭建网站并设置自定义域名?  在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?  网站制作需要会哪些技术,建立一个网站要花费多少?  SQL查询语句优化的实用方法总结  如何撰写建站申请书?关键要点有哪些?  香港服务器租用费用高吗?如何避免常见误区?  如何在阿里云完成域名注册与建站?  网站制作费用多少钱,一个网站的运营,需要哪些费用?  打鱼网站制作软件,波克捕鱼官方号怎么注册?  建站主机选虚拟主机还是云服务器更好?  如何快速上传自定义模板至建站之星?  广州顶尖建站服务:企业官网建设与SEO优化一体化方案  建站ABC备案流程中有哪些关键注意事项?  制作电商网页,电商供应链怎么做?  建站主机选购指南:核心配置与性价比推荐解析  深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?  微网站制作教程,我微信里的网站怎么才能复制到浏览器里?  单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?  如何选择靠谱的建站公司加盟品牌?  如何在阿里云购买域名并搭建网站?  浅析上传头像示例及其注意事项  如何通过WDCP绑定主域名及创建子域名站点?  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  贸易公司网站制作流程,出口贸易网站设计怎么做?  建站主机如何选?高性价比方案全解析  怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  威客平台建站流程解析:高效搭建教程与设计优化方案  建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  建站主机选购指南与交易推荐:核心配置解析  较简单的网站制作软件有哪些,手机版网页制作用什么软件?  网站微信制作软件,如何制作微信链接?  音响网站制作视频教程,隆霸音响官方网站?  北京营销型网站制作公司,可以用python做一个营销推广网站吗?  网站制作公司排行榜,四大门户网站排名? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。