Java 实现二叉树排序和查找

来源:互联网 发布:手机百度软件 编辑:程序博客网 时间:2024/06/11 21:12

啥都不说了,直接上代码


package com.inter.structure;import java.util.Random;/** * 使用Java实现二叉树排序 二叉树只有一个根节点 *  * @author Hua *  */public class HuaBinaryTree {// 二叉树的根private Node root;// 添加数据private void add(int data) {if (root != null) {// 如果根已经创建,就调用元素的添加方法root.add(data);} else {root = new Node(data);}}// 输出二叉树的数值private void print() {root.printNode();}// 查找二叉树private boolean find(int data) {return root.find(data);}/** * 测试 */public static void main(String[] args) {HuaBinaryTree root = new HuaBinaryTree();// 我们生成50个随机数,然后保存在二叉树中int[] intArray = new int[50];for (int i = 0; i < intArray.length; i++) {// 返回一个大于等于0小于n的随机数int temp = new Random().nextInt(100);intArray[i] = temp;root.add(temp);}System.out.println("要查找的数组元素是:" + intArray[20]);root.find(intArray[20]);root.print();}/** * 元素类 *  * @author Hua *  */class Node {private int data;private Node left;// 左子树private Node right;// 右子树public Node(int data) {this.data = data;}// 添加元素public void add(int data) {// 如果根大于传递进来的数值if (this.data > data) {if (this.left == null) {left = new Node(data);} else {// 如果左子树有数值了,就进行递归,继续往左边找left.add(data);}} else {if (this.right == null) {right = new Node(data);} else {right.add(data);}}}// 中序输出二叉树private void printNode() {System.out.print("排序后的二叉树:");if (this.left != null) {// 递归调用,直到找到最左边的数值(即最小数值)this.left.printNode();}System.out.print(this.data + ",");if (this.right != null) {this.right.printNode();}}// 查找指定元素public boolean find(int data) {System.out.println("happen " + this.data);// 如果找到了这个数值,就返回trueif (data == this.data) {return true;} else if (data > this.data) {// 要找的数值比较大,就往右找if (right == null) {// 找到了最后边,返回falsereturn false;}return right.find(data);} else {if (left == null) {// 找到了最左边return false;}return left.find(data);}}}}


0 0
原创粉丝点击