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小时内与您取得联系。