二叉树遍历Java实现

【仅贴代码及测试结果】

-------------------BinaryTree.java------------------------------

class Tree<E>{
    E element;
    Tree<E> lChild;
    Tree<E> rChild;
    public Tree(E e){
        element = e;
    }
}
public class BinaryTree {

    /**
     * 树形如下:
     *         1
     *     /      *    2   3
     *    \   /      *     4  5  6
     */
    public static void main(String[] args) {

        Tree<Integer> n1 = new Tree<Integer>(1);
        Tree<Integer> n2 = new Tree<Integer>(2);
        Tree<Integer> n3 = new Tree<Integer>(3);
        Tree<Integer> n4 = new Tree<Integer>(4);
        Tree<Integer> n5 = new Tree<Integer>(5);
        Tree<Integer> n6 = new Tree<Integer>(6);
        System.out.println("Construct the tree...");
        n2.rChild=n4;
        n3.lChild=n5;
        n3.rChild=n6;
        n1.lChild=n2;
        n1.rChild=n3;

        System.out.println("打印先序遍历结果:");
        firstOrder(n1);
        System.out.println("\n打印中序遍历结果:");
        midOrder(n1);
        System.out.println("\n打印后序遍历结果:");
        lastOrder(n1);
    }

    public static <E> void firstOrder(Tree<E> root){
        if(root!=null){
            System.out.print(root.element+" ");
            firstOrder(root.lChild);
            firstOrder(root.rChild);
        }
    }
    public static <E> void lastOrder(Tree<E> root){
        if(root!=null){
            lastOrder(root.lChild);
            lastOrder(root.rChild);
            System.out.print(root.element+" ");
        }
    }
    public static <E> void midOrder(Tree<E> root){
        if(root!=null){
            midOrder(root.lChild);
            System.out.print(root.element+" ");
            midOrder(root.rChild);
        }
    }

}

输出结果:

Construct the tree...
打印先序遍历结果:
1 2 4 3 5 6
打印中序遍历结果:
2 4 1 5 3 6
打印后序遍历结果:
4 2 5 6 3 1 
时间: 2024-10-20 22:47:07

二叉树遍历Java实现的相关文章

二叉树遍历-JAVA实现

二叉树遍历分为前序.中序.后序递归和非递归遍历.还有层序遍历. 1 //二叉树节点 2 public class BinaryTreeNode { 3 private int data; 4 private BinaryTreeNode left; 5 private BinaryTreeNode right; 6 7 public BinaryTreeNode() {} 8 9 public BinaryTreeNode(int data, BinaryTreeNode left, Binar

java实现二叉树遍历

package com.tree.demo; public class BinaryTree { int data; // 根节点数据   BinaryTree left; // 左子树 BinaryTree right; // 右子树 public BinaryTree(int data) // 实例化二叉树类 { this.data = data; left = null; right = null; } public void insert(BinaryTree root, int dat

java数据结构之二叉树遍历的非递归实现

算法概述递归算法简洁明了.可读性好,但与非递归算法相比要消耗更多的时间和存储空间.为提高效率,我们可采用一种非递归的二叉树遍历算法.非递归的实现要借助栈来实现,因为堆栈的先进后出的结构和递归很相似.对于中序遍历来说,非递归的算法比递归算法的效率要高的多.其中序遍历算法的实现的过程如下:(1).初始化栈,根结点进栈:(2).若栈非空,则栈顶结点的左孩子结点相继进栈,直到null(到叶子结点时)退栈:访问栈顶结点(执行visit操作)并使栈顶结点的右孩子结点进栈成为栈顶结点.(3).重复执行(2),

【数据结构】之二叉树的java实现

二叉树的定义: 二叉树是树形结构的一个重要类型.许多实际问题抽象出来的数据结构往往是二叉树的形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要. 二叉树(BinaryTree)是n(n≥0)个结点的有限集,它或者是空集(n=0),或者由一个根结点及两棵互不相交的.分别称作这个根的左子树和右子树的二叉树组成. 这个定义是递归的.由于左.右子树也是二叉树, 因此子树也可为空树.下图中展现了五种不同基本形态的二叉树. 其中 (a) 为空树, (b

算法之二叉树遍历

[代码示例] package com.wcs.java; import java.util.ArrayList; import java.util.List; public class BinaryTree { class TreeNode { public String data; //数据 public TreeNode leftNode; //左子树 public TreeNode rightNode; //右子树 public TreeNode(String data, TreeNode

【数据结构与算法】二叉树的Java实现及特点总结

转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 二叉树是一种非常重要的数据结构,它同时具有数组和链表各自的特点:它可以像数组一样快速查找,也可以像链表一样快速添加.但是他也有自己的缺点:删除操作复杂. 我们先介绍一些关于二叉树的概念名词. 二叉树:是每个结点最多有两个子树的有序树,在使用二叉树的时候,数据并不是随便插入到节点中的,一个节点的左子节点的关键值必须小于此节点,右子节点的关键值必须大于或者是等于此节点,所以又称二叉查找树.二叉排序树.二叉搜索

【数据结构】二叉树的Java实践

二叉树,是常用的树之一. 性质: 每个节点最多有2个节点(即度最大为2) 有左.右节点(或左.右子树)之分,且节点有顺序之分(即左.右不能随意调换) 下面对二叉树做最简单的Java实践. > 二叉树的Java实践 树节点 package com.nicchagil.btree; public class TreeNode { private Integer value; private TreeNode left; private TreeNode right; public TreeNode(

排序二叉树及其Java实现

定义 排序二叉树的定义也是递归定义的,需要满足: (1)若它的左子树不为空,则左子树上所有节点的值要均小于根节点的值: (2)若它的右子树不为空,则右子树上所有节点的值要均大于根节点的值: (3)左.右子树也分别是排序二叉树 如下图,对于排序二叉树,若按中序遍历就可以得到由小到大的有序序列. 创建 创建排序二叉树的步骤就是不断像排序二叉树中添加新节点(p)的过程: (1)以根节点(root)为当前节点(current)开始搜索: (2)用新节点p的值和current的值进行比较: (3)如果p.

二叉树的Java实现及特点总结

二叉树是一种非常重要的数据结构,它同时具有数组和链表各自的特点:它可以像数组一样快速查找,也可以像链表一样快速添加.但是他也有自己的缺点:删除操作复杂. 我们先介绍一些关于二叉树的概念名词. 二叉树:是每个结点最多有两个子树的有序树,在使用二叉树的时候,数据并不是随便插入到节点中的,一个节点的左子节点的关键值必须小于此节点,右子节点的关键值必须大于或者是等于此节点,所以又称二叉查找树.二叉排序树.二叉搜索树. 完全二叉树:若设二叉树的高度为h,除第 h 层外,其它各层 (1-h-1) 的结点数都