数据结构java(十)二叉树①链式结构实现(LinkedBinaryTree)

本文介绍了如何使用Java创建链式二叉树结构,包括结点Node的定义,二叉树接口BinaryTree的设立,具体实现类LinkedBinaryTree的详细实现,并提供了测试步骤。
摘要由CSDN通过智能技术生成

 1.创建链式二叉树结点Node

/**
 * 链式二叉树结点
 * @author Administrator
 */
public class Node {
    /**
     *  结点值
     */
    private Object value;
    /**
     *  左子树
     */
    private Node leftChild;
    /**
     *  右子树
     */
    private Node rightChild;


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

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

    public Node(Object value, Node leftChild, Node rightChild) {
        this.value = value;
        this.leftChild = leftChild;
        this.rightChild = rightChild;
    }

    public Object getValue() {
        return value;
    }

    public void setValue(Object value) {
        this.value = value;
    }

    public Node getLeftChild() {
        return leftChild;
    }

    public void setLeftChild(Node leftChild) {
        this.leftChild = leftChild;
    }

    public Node getRightChild() {
        return rightChild;
    }

    public void setRightChild(Node rightChild) {
        this.rightChild = rightChild;
    }
}

2.创建BinaryTree二叉树接口

/**
 * 二叉树接口
 * 可以有不同的实现类,每个类可以使用不同的存储结构
 * 比如:顺序结构,链式结构
 * @author Administrator
 */
public interface BinaryTree {

    /**
     * 是否空树
     * @return
     */
    boolean isEmpty();

    /**
     * 树结点数量
     * @return
     */
    int size();

    /**
     * 获取二叉树的高度
     * @return
     */
    int getHeight();

    /**
     * 查找指定值的结点
     * @param value
     * @return
     */
     Node findKey(Object value);

    /**
     * 先序递归遍历
     */
    void preOrderTraverse();

    /**
     * 中序递归遍历
     */
    void inOrderTraverse();

    /**
     * 后序递归遍历
     */
    void postOrderTraverse();

    /**
     * 先序非递归遍历(借助栈)
     */
    void preOrderByStack();

    /**
     * 中序非递归遍历(借助栈)
     */
    void inOrderByStack();

    /**
     * 后序非递归遍历(借助栈)
     */
    void postOrderByStack();

    /**
     * 按照层次遍历二叉树(借助队列)
     */
    void levelOrderByStack();
}

3.实现LinkedBinaryTree二叉树

/**
 * 链式
 * @author Administrator
 */
public class LinkedBinaryTree implements BinaryTree {
    /**
     * 根结点
     */
    private Node root;

    /**
     * 是否空树
     *
     * @return
     */
    @Override
    public boolean isEmpty() {
        return root==null;
    }

    /**
     * 树结点数量
     * @return
     */
    @Override
    public int size() {
        System.out.print("二叉树结点的个数是:");
        return thi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值