构建与遍历二叉搜索树

java用递归的方式实现二叉搜索树,说明一点,二叉平衡 树是二叉搜索树的进化体。二叉搜索树构建时的难点在于节点的插入,插入节点的方法与查询和类似,都是用递归的方式。

/**
 * 构建的二叉搜索树,平衡二叉树是二叉搜索树的进化体
 */
class Tree{
    int value;
    Tree left;
    Tree right;

    Tree(int value){
        this.value = value;
    }

    void addNode(Tree oldtree,Tree tree){
        if(tree.value>oldtree.value){
            if(oldtree.right==null){
                oldtree.right = new Tree(tree.value);
            }else{
                oldtree = oldtree.right;
                addNode(oldtree,tree);
            }
        }else if(tree.value<oldtree.value){
            if(oldtree.left==null){
                oldtree.left = new Tree(tree.value);
            }else{
                oldtree = oldtree.left;
                addNode(oldtree,tree);
            }
        }else if(oldtree.value == tree.value){
            return;
        }
    }

    /**
     * 二叉树的中序遍历
     * @param tree
     */
    void trasvalNode(Tree tree){
        if (tree.left!=null){
            trasvalNode(tree.left);
        }
        System.out.println(tree.value);

        if(tree.right!=null){
            trasvalNode(tree.right);
        }
    }
}

public class Test2 {
    public static void main(String args[]){
        int nums[] = {40,10,2,3,5,2,65};
        Tree tree = new Tree(nums[0]);
        for(int i=1;i<nums.length;i++){
          tree.addNode(tree,new Tree(nums[i]));
        }
        tree.trasvalNode(tree);
    }
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值