二叉树的应用
来源:互联网 发布:远程网络打印机 编辑:程序博客网 时间:2024/05/16 08:01
一、二叉排序树
在建立二叉树的同时,数据已经经过初步的比较,并按照二叉树的建立规则来存放数据,规则如下:
- 第一个输入数据作为根节点
- 之后的数据以递归的方式与树根进行比较,小于树根置于左子树,大于树根置于右子树
按照上述规则建立好二叉树后,只要利用中序遍历方式就可得到由小到大排序好的数据。如果想得到由大到小排列,可将最后结果置于堆栈内再POP出来。
二、二叉搜索树
如果一个二叉树符合“每一个节点的数据大于左子树节点且小于右子树节点”,称这样的树为二分树,二分树便于排序和搜索。只需在二叉排序树中将要搜索的值与树根进行比较,若小于树根,则往左子树走进行比较,若大于树根则往右子树走进行比较。
二叉搜索树的搜索过程为,首先建立一棵二叉排序树,输入要寻找的值,若找到则显示搜索的次数,若找不到则显示提示信息。
我们编写boolean FindTree(TreeNode node,int value)函数来进行搜索,将树根和待搜索值传递给函数,具体代码如下:
/*在二叉树中搜索值value*/ public static boolean FindTree(TreeNode node,int value) { if(node==null) //空树的情况 return false; if(node.value==value) { //和树根节点的值相等 System.out.println("共搜索"+count+"次"); return true; } else if(value<node.value) { //待搜索值小于树根 count++; //搜索次数加1 return FindTree(node.leftNode,value); //递归遍历左子树进行搜索 } else { //待搜索值大于树根 count++; return FindTree(node.rightNode,value); //递归遍历右子树进行搜索 } }
测试代码如下:(AddNodeToTree函数见博客二叉树的建立
http://blog.csdn.net/zd454909951/article/details/78794263)
public class Test { static TreeNode rootNode; static int count=1; //记录搜索次数 public static void main(String[] args) { Scanner scanner=new Scanner(System.in); int[] arr= {6,3,5,9,7,8,4,2}; System.out.println("原始数组内容为:"); for(int i=0;i<arr.length;i++) System.out.print(arr[i]+" "); System.out.println(); for(int i=0;i<arr.length;i++) //建立二叉搜索树 AddNodeToTree(arr[i]); System.out.println("请输入要搜索的值:"); int value=scanner.nextInt(); if(FindTree(rootNode,value)) //调用FindTree()函数 System.out.println("要搜索的值在数组中存在"); else System.out.println("要搜索的值不存在"); }}
程序运行结果:
上述程序建立的二叉树如下所示:
阅读全文
0 0
- 二叉树的应用
- 二叉树的应用
- 二叉树的应用
- 二叉树的应用
- 二叉树的应用
- 二叉树的应用
- 二叉树及二叉树的应用
- 二叉树的应用—二叉树遍历的应用
- asp二叉树的应用
- 二叉树的遍历应用
- 二叉树遍历的应用
- 二叉查找树的应用
- 搜索二叉树的应用
- 二叉树的应用--哈夫曼树
- 二叉树的实践应用
- 二叉树的基本应用
- 二叉树的操作应用
- 遍历二叉树的应用
- PPTP的使用
- 一起艳学spring clound微服务架构
- Maven项目中使用本地JAR包
- leetcode—Palindrome Number
- white-spaces(空格、回车、制表)与scanf;
- 二叉树的应用
- linux下Qt动态库创建与调用学习笔记一(静态加载)
- java几种数据转换
- 信息安全理论(1)
- JS 禁止F12和右键操作控制台,兼容各浏览器
- 表的建立
- 图数据库:2 关联数据的存储选择
- 广告去弹窗
- MSP430学习笔记-定时器A