二叉查找树(华中科技大学计算机考研复试上机题)

题目描述

输入一系列整数,建立二叉排序数,并进行前序,中序,后序遍历。 

输入描述:

输入第一行包括一个整数n(1<=n<=100)。

接下来的一行包括n个整数。

输出描述:

可能有多组测试数据,对于每组数据,将题目所给数据建立一个二叉排序树,并对二叉排序树进行前序、中序和后序遍历。

每种遍历结果输出一行。每行最后一个数据之后有一个空格。

输入中可能有重复元素,但是输出的二叉树遍历序列中重复元素不用输出。

二叉查找树

二叉查找树,也叫二叉排序树是满足以下条件的二叉树:
1.左子树上的所有节点值均小于根节点值
2.右子树上的所有节点值均不小于根节点值
3.左右子树也满足上述两个条件

节点类:

class Node {
    public int iData;    //数据域,可以存放对象
    public Node left;                   //指向左孩子
    public Node right; //指向右孩子
    public void displsyndoe(){ 
        System.out.print(iData +" ");
    }

    public Node(int iData) { //构造函数
        this.iData = iData;
    }
}

二叉查找树类

二叉查找树的插入过程如下:

1.若当前的二叉查找树为空,则插入的元素为根节点

2.若插入的元素值小于根节点值,则将元素插入到左子树中

3.若插入的元素值不小于根节点值,则将元素插入到右子树中

public void insert(int iData ){	//插入新的节点
        Node newNode = new Node(iData);
        if(root == null){		//树为空,把第一个节点置为根节点
            root = newNode;
        }else{ //不为空
            Node current = root;	//声明啷个指向root的引用
            Node parent = root;
            while (true){  
                parent = current;
                if(iData < current.iData){   //待插入的数值小于当前节点的值
                    current = current.left;  //把current指向当前节点的左孩子
                    if (current == null){
                        parent.left = newNode;
                        return;
                    }
                }else {
                    current = current.right;   //待插入的数值大于当前节点的值
                    if (current == null){
                        parent.right = newNode;
                        return;
                    }
                }
            }
        }
    }
}

《二叉查找树(华中科技大学计算机考研复试上机题)》

遍历

遍历是一个简单的递归过程,记住先序、中序、后序遍历的口诀就可以了

 public void preOrder(Node node){
        if(node!=null){
            node.displsyndoe();       
            preOrder(node.left);
            preOrder(node.right);
        }
    }
    
    public void middleOrder(Node node){
        if(node!=null){
            middleOrder(node.left); 
            node.displsyndoe();
            middleOrder(node.right);
        }
    }

    public void postOrder(Node node){
        if(node!=null){
            postOrder(node.left);
            postOrder(node.right);
            node.displsyndoe();
        }
    }

    原文作者:二叉查找树
    原文地址: https://blog.csdn.net/beautiful_face/article/details/68065028
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞