【Java数据结构[链表--二叉排序树]】

二叉排序树

  1. 树有很多种,每个节点 最多只能有两个节点的树称为二叉树
  2. 二叉树的子节点分为左子节点和右子节点

在这里插入图片描述

代码实现:

package com.atguigu.javase.homework;


class Tree{
    //存储根节点地址值
    TreeNode root;
    //记录二叉树的节点数量
    int size;

    //二叉树节点对象
    private class TreeNode{
        int value;
        TreeNode left;
        TreeNode right;

        private TreeNode(int value) {
            this.value = value;
        }
    }
    private void insert(TreeNode rootTemp,TreeNode newNode){
        if(newNode.value<rootTemp.value){
            if(rootTemp.left==null){
                rootTemp.left=newNode;
            }else{
                insert(rootTemp.left,newNode);
            }
        }else{
            if(rootTemp.right==null){
                rootTemp.right=newNode;
            }else{
                insert(rootTemp.right,newNode);
            }
        }
    }

    /**
     * 添加节点--递归思想
     * @param val
     */
    public void add(int val){
        TreeNode newNode = new TreeNode(val);
        if(root==null){
            root=newNode;
        }else {
            insert(root,newNode);
        }
        size++;
    }
    private void view(TreeNode rootTemp){
        if(rootTemp==null){
            return;
        }
        if(rootTemp.left!=null){
            view(rootTemp.left);
        }
        System.out.println(rootTemp.value);
        if(rootTemp.right!=null){
            view(rootTemp.right);
        }
    }

    /**
     * 遍历打印二叉树的节点   
     */
    public void travel(){
        view(root);
    }
    public int size(){
        return size;
    }

}
public class TreeTest {
    public static void main(String[] args) {
        Tree tree = new Tree();
        tree.add(60);
        tree.add(30);
        tree.add(80);
        tree.add(90);
        tree.add(70);
        tree.add(40);
        tree.add(20);
        tree.add(10);
        System.out.println(tree.size());
        tree.add(1000);
        tree.travel();
        System.out.println(tree.size());
    }

}

理解不深,后续补充

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值