二叉树的应用

来源:互联网 发布:远程网络打印机 编辑:程序博客网 时间: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("要搜索的值不存在");    }}

程序运行结果:

这里写图片描述

上述程序建立的二叉树如下所示:

这里写图片描述

原创粉丝点击