二叉排序树 bst 创建和遍历

package jiegou.bst;

import sun.font.GlyphLayout;
import sun.nio.cs.ext.TIS_620;

// 二叉排序树
public class BinarySortTreeDemo {
    public static void main(String[] args) {
        int[] arr = {7,3,10,12,5,1,9};

        BinarySortTree binarySortTree = new BinarySortTree();
        // 循环添加节点到树
        for (int i = 0; i < arr.length; i++) {
            binarySortTree.addNode(new Node(arr[i]));
        }
        
        binarySortTree.infixOrder();
    }
}

class BinarySortTree
{
    public Node root;

    public void addNode(Node node){
        if(root == null) {
            root = node;
        } else {
            root.addNode(node);
        }
    }

    public void infixOrder()
    {
        if(root == null) {
            System.out.println("树为空");
            return ;
        }

        root.infixOrder();

    }
}

class Node{
    @Override
    public String toString() {
        return "Node{" +
                "value=" + value +
                '}';
    }

    public int value;
    public Node left;
    public Node right;

    public Node(int value){
        this.value = value;
    }

    // 添加节点 递归 需要满足二叉排序树的要求

    public void addNode(Node node){
        if(node == null){
            return ;
        }

        // 传入的节点的值和当前的子树的根节点的关系
        if(node.value < this.value) {
            if(this.left == null){ // 如果当前节点左子节点为空 直接添加到下面
                this.left = node;
            } else {
                // 递归添加
                this.left.addNode(node);
            }
        }

        if(node.value > this.value) {
            if(this.right == null){
                this.right = node;
            } else {
                this.right.addNode(node);
            }
        }

    }


    public void infixOrder()
    {
        if(this.left != null) {
            this.left.infixOrder();
        }

        System.out.println(this);

        if(this.right != null) {
            this.right.infixOrder();
        }
    }
}

中序遍历结果

Node{value=1}
Node{value=3}
Node{value=5}
Node{value=7}
Node{value=9}
Node{value=10}
Node{value=12}
posted @ 2021-08-15 17:45  brady-wang  阅读(43)  评论(0编辑  收藏  举报