树~java递归实现二叉树先、中、后序遍历

前言:大三了,正在努力复习大一大二的知识,坑爹呀,由于做得项目里很少用到这些重要的基础知识,比如数据结构、算法,项目只会涉及简单的算法、数据结构知识,所以该忘的都给忘了,必须复习。

节点类

package BinaryTree;

public class Node {
//  左子节点
    Node leftNode;
//  右子节点
    Node rightNode;
//  节点值
    char value;
}

二叉树类

package BinaryTree;

import javax.swing.text.AbstractDocument.Content;

public class BinaryTree {
    // 根节点
    Node root;
    // 二叉树所有节点值(默认为先序遍历)
    char content[];
    // content的索引
    static int index = 0;

    public char[] getContent() {
        return content;
    }

    public void setContent(char[] content) {
        this.content = content;
    }

    public BinaryTree(char[] content) {
        root = new Node();
        setContent(content);
    }

    public Node createBinaryTree(Node n) {
        char ch = content[index];
        // 用于获取二叉树某一节点的值
        // System.out.println(index);
        index++;

        if ('$' == ch)
            n = null;
        else {
            n.value = ch;
            n.leftNode = createBinaryTree(new Node());
            n.rightNode = createBinaryTree(new Node());
        }

        return n;
    }

    /**
     * 递归先序
     * */

    public void preOrder(Node n) {
        if (n != null) {
            System.out.print(n.value + " ");
            preOrder(n.leftNode);
            preOrder(n.rightNode);
        }

    }

    /**
     * 递归中序
     * */
    void inOrder(Node n) {
        if (n != null) {
            inOrder(n.leftNode);
            System.out.print(n.value + " ");
            inOrder(n.rightNode);
        }
    }

    /**
     * 递归后序
     * */
    void postOrder(Node n) {
        if (n != null) {
            postOrder(n.leftNode);
            postOrder(n.rightNode);
            System.out.print(n.value + " ");
        }
    }

}

测试类

package BinaryTree;

public class Test {

    public static void main(String[] args) {
//      二叉树的值,此处是先序表示,$代表节点空值
    String value="abc$$de$g$$f$$$";
    BinaryTree tree=new BinaryTree(value.toCharArray());
    tree.createBinaryTree(tree.root);


    System.out.println("先序遍历打印输出");
    tree.preOrder(tree.root);
    System.out.println();
    System.out.println("中序遍历打印输出");
    tree.inOrder(tree.root);
    System.out.println();
    System.out.println("后序遍历打印输出");
    tree.postOrder(tree.root);
    }

}

输出结果

这里写图片描述

该二叉树的样子(将就着看吧)

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值