美文网首页
树的实现(树的创建及遍历)

树的实现(树的创建及遍历)

作者: wisdom1991 | 来源:发表于2017-11-03 15:47 被阅读0次

节点Node:

package TreeExercise;

public class TreeNode<T> {
    public T data;
    public TreeNode<T> left;
    public TreeNode<T> right;

    public TreeNode(T t) {
        data = t;
        left = null;
        right = null;
    }
}

树的基本方法:

package TreeExercise;

import java.util.Scanner;

public class MyTree<T extends Comparable> {

    //根节点
    public TreeNode<T> root;

    public MyTree() {
        root = new TreeNode<T>(null);
    }

    //创建查找二叉树
    public void buildTree(TreeNode<T> node, T data) {
        if (root == null) {
            root = new TreeNode<T>(data);
        } else {
            if (data.compareTo(node.data) < 0) {
                if (node.left == null) {
                    node.left = new TreeNode<T>(data);
                } else {
                    buildTree(node, data);
                }
            } else {
                if (node.right == null) {
                    node.right = new TreeNode<T>(data);
                } else {
                    buildTree(node, data);
                }
            }
        }
    }

    public void createTree() {
        Scanner sanner = new Scanner(System.in);
        root = createTreeNode(root, sanner);
    }

    //前序遍历生成二叉树
    private TreeNode<T> createTreeNode(TreeNode<T> node, Scanner scanner) {
        T data = (T) scanner.nextLine();
        if ("/".equals(data)) {
            return null;
        } else {
            node = new TreeNode<T>(data);
            node.left = createTreeNode(node.left, scanner);
            node.right = createTreeNode(node.right, scanner);
        }
        return node;
    }


    //region 递归遍历二叉树

    //中序遍历
    public void orderTraverse() {
//        System.out.println("中序遍历");
        System.out.println("orderTraverse");
        orderTraverse(root);
        System.out.println();
    }

    private void orderTraverse(TreeNode<T> node) {
        if (node == null) return;

        orderTraverse(node.left);
        System.out.println((T) node.data);
        orderTraverse(node.right);
    }

    //前序遍历
    public void preOrderTraverse() {
//        System.out.println("前序遍历");
        System.out.println("orderTraverse");
        preOrderTraverse(root);
        System.out.println();
    }

    private void preOrderTraverse(TreeNode<T> node) {
        if (node == null) return;

        System.out.println(node.data);
        orderTraverse(node.left);
        orderTraverse(node.right);
    }

    //后序遍历
    public void postOrderTraverse() {
//        System.out.println("后序遍历");
        System.out.println("postOrderTraverse");
        postOrderTraverse(root);
        System.out.println();
    }

    private void postOrderTraverse(TreeNode<T> node) {
        if (node == null) return;

        orderTraverse(node.left);
        orderTraverse(node.right);
        System.out.println(node.data);
    }

    //endregion


}

相关文章

  • 树的实现(树的创建及遍历)

    节点Node: 树的基本方法:

  • 组合模式

    抽象构件角色 树枝节点 叶子节点 树的创建及组装 树的遍历

  • 数据结构之二叉树2

    二叉树的创建 二叉树的创建用到了辅助队列,通过辅助队列来创建二叉树; 二叉树的遍历 前(先)序遍历 1、递归实现 ...

  • 算法之二叉树

    二叉树之C++实现 创建二叉树 复制二叉树 先序遍历 递归实现 非递归实现 中序遍历 递归实现 非递归实现 后序遍...

  • python 实现树

    创建树,遍历树,反转树

  • 二叉树的创建和遍历

    二叉树的创建和遍历 如图所示的二叉树,我们用C++来实现其创建和...

  • 数据结构之树的相关问题

    实验要求 实现二叉树的抽象数据类型 实现二叉树的建立的运算 实现二叉树的遍历运算 实现创建哈夫曼树的算法 实验代码...

  • 二叉树的基本操作

    一、基本内容 二叉树的创建(先顺遍历的方法) 二叉树的先序遍历 二叉树的中序遍历 二叉树的后序遍历 哈夫曼树的创建...

  • golang 的二叉搜索树

    Golang版的二叉树。 节点声明,以及树的创建。 树的插入节点 树的中序遍历(实现排序) 找到树节点中的最小的(...

  • 数据结构

    二叉树的创建与遍历 哈夫曼树的创建

网友评论

      本文标题:树的实现(树的创建及遍历)

      本文链接:https://www.haomeiwen.com/subject/tbqtmxtx.html