二叉树的遍历主要有三种:分别是前序遍历,中序遍历,后序遍历。
BSATree.java
package com.bijian.study; public abstract class BSATree<T extends Comparable<T>> { protected BSTNode<T> aRoot; // 根结点 /** * 节点 */ protected class BSTNode<E> { E key; // 关键字(键值) BSTNode<E> left; // 左孩子 BSTNode<E> right; // 右孩子 BSTNode<E> parent; // 父结点 public BSTNode(E key, BSTNode<E> parent, BSTNode<E> left, BSTNode<E> right) { this.key = key; this.parent = parent; this.left = left; this.right = right; } public BSTNode(E key, BSATree<T>.BSTNode<E> parent) { super(); this.key = key; this.parent = parent; } } /** * 创建二叉树 */ protected abstract void createBSTree(); /** * 记录节点 * @param key */ private void takeNode(T key) { System.out.print(key + " "); } /** * 前序遍历 * @param node */ private void preOrder(BSTNode<T> node) { if (node != null) { takeNode(node.key); preOrder(node.left); preOrder(node.right); } } protected void preOrder() { preOrder(aRoot); } /** * 中序遍历 * @param node */ private void inOrder(BSTNode<T> node) { if (node != null) { inOrder(node.left); takeNode(node.key); inOrder(node.right); } } protected void inOrder() { inOrder(aRoot); } /** * 后续遍历 * @param node */ private void postOrder(BSTNode<T> node) { if (node != null) { postOrder(node.left); postOrder(node.right); takeNode(node.key); } } protected void postOrder() { postOrder(aRoot); } }
BSTree.java
package com.bijian.study; public class BSTree extends BSATree<String> { @Override public void createBSTree() { aRoot = new BSTNode<String>("A", null); BSTNode<String> bNode = new BSTNode<String>("B", aRoot); BSTNode<String> cNode = new BSTNode<String>("C", aRoot); BSTNode<String> dNode = new BSTNode<String>("D", bNode); BSTNode<String> eNode = new BSTNode<String>("E", bNode); BSTNode<String> fNode = new BSTNode<String>("F", cNode); BSTNode<String> gNode = new BSTNode<String>("G", cNode); BSTNode<String> hNode = new BSTNode<String>("H", dNode); BSTNode<String> iNode = new BSTNode<String>("I", dNode); BSTNode<String> jNode = new BSTNode<String>("J", eNode); BSTNode<String> kNode = new BSTNode<String>("K", fNode); aRoot.left = bNode; aRoot.right = cNode; bNode.left = dNode; bNode.right = eNode; cNode.left = fNode; cNode.right = gNode; dNode.left = hNode; dNode.right = iNode; eNode.right = jNode; fNode.right = kNode; } public static void main(String[] args) { BSTree b = new BSTree(); b.createBSTree(); System.out.println("********************** 前序遍历 **********************"); b.preOrder(); System.out.println(); System.out.println("********************** 中序遍历 **********************"); b.inOrder(); System.out.println(); System.out.println("********************** 后序遍历 **********************"); b.postOrder(); System.out.println(); } }
运行结果:
********************** 前序遍历 ********************** A B D H I E J C F K G ********************** 中序遍历 ********************** H D I B E J A F K C G ********************** 后序遍历 ********************** H I D J E B K F G C A
前序遍历:
中序遍历:
后序遍历:
相关推荐
java编程,二叉树的中序遍历,递归实现
除了代码实现,课程设计文档可能包含了二叉树的概念解释、层序遍历的算法描述、以及如何使用Java语言实现这一算法的详细步骤。同时,`课程设计.doc`可能包含项目报告,详细阐述了设计目的、实现方法、遇到的问题及...
完全二叉树的层序遍历-labview完全二叉树的层序遍历-labview完全二叉树的层序遍历-labview完全二叉树的层序遍历-labview完全二叉树的层序遍历-labview完全二叉树的层序遍历-labview完全二叉树的层序遍历-labview完全...
对于数据结构,二叉树的实现的了解。通过java实现,包括了建立,查找,遍历,比较的功能。
二叉树遍历是访问二叉树中所有节点的过程,通常有三种主要方法:前序遍历、中序遍历和后序遍历。这些遍历方式对于理解和操作二叉树数据结构至关重要。 1. **前序遍历**(Preorder Traversal): - 访问根节点。 -...
二叉树,一个基于Java实现的二叉树学习项目。包含二叉树生成、遍历。适用人群:计算机,电子信息工程、数学等专业的大学生学习二叉树等数据结构,作为“参考资料”使用。 二叉树,一个基于Java实现的二叉树学习项目...
中序遍历是二叉树遍历的一种方法,它按照“左-根-右”的顺序访问树中的所有节点,对于理解树的性质和执行某些操作非常有用。本课程设计将详细介绍如何使用Java编程语言实现二叉树的中序遍历。 首先,我们先构建...
因此,满二叉树的前序遍历、中序遍历和后序遍历均可以通过递归方式实现。 以前序遍历为例,满二叉树的前序遍历顺序为:根、左、右。 在具体实现过程中,我们可以通过构造一个满二叉树,然后进行前序遍历来获取遍历...
Java作为一种强大的面向对象编程语言,提供了丰富的数据结构支持,包括二叉树的实现。 首先,我们来看如何通过先序和中序序列建立二叉树。先序遍历顺序是:根节点 -> 左子树 -> 右子树;中序遍历顺序是:左子树 -> ...
java实现二叉树非递归前序中序后序遍历
在计算机科学中,二叉树是一种常见的...对于实际的编程实现,你需要根据提供的代码和数据进行调整,确保逻辑正确,并遵循二叉树遍历的规则。在进行这类问题的解决时,理解和熟悉二叉树的性质以及各种遍历方法至关重要。
在Java编程中,二叉树是一种常见的数据结构,它由节点组成,每个节点都有一个值,并且可以有至多两个子节点,分别称为左子节点和右子节点。本篇文章将详细探讨如何实现二叉树的层次遍历,即按照从根节点到叶子节点的...
在计算机科学中,二叉树遍历是访问树中所有节点的一种基本操作,通常有三种主要的遍历方式:前序遍历、中序遍历和后序遍历。这些遍历方法在数据结构和算法领域中有着广泛的应用,特别是在编译器设计、搜索算法和数据...
递归是一种函数调用自身的技术,对于二叉树遍历来说,递归方法简洁明了。 1. 前序遍历(根->左->右): - 首先访问根节点。 - 然后递归地遍历左子树。 - 最后递归地遍历右子树。 2. 中序遍历(左->根->右): ...
二叉树遍历是一种访问二叉树所有节点的方法,通常分为三种主要类型:先序遍历、中序遍历和后序遍历。在Java编程语言中,我们可以使用递归或迭代的方式来实现这些遍历方法。 **先序遍历**(根-左-右)是最常见的遍历...
二叉树遍历是针对二叉树进行操作的一种基本算法,主要有三种类型:前序遍历、中序遍历和后序遍历。本问题主要关注的是前序遍历,它是二叉树遍历的一种常见方式。 **前序遍历**的顺序是:先访问根节点,然后递归地...
二叉树的遍历主要有三种方法:前序遍历、中序遍历和后序遍历。接下来,我们将详细探讨这三种遍历方式以及它们的实现。 1. 前序遍历(Preorder Traversal) 前序遍历的顺序是:根节点 -> 左子树 -> 右子树。首先访问...
中序遍历是二叉树遍历的一种方式,它遵循以下顺序: 1. 遍历左子树 2. 访问根节点 3. 遍历右子树 这种遍历方法在处理二叉搜索树(BST)时特别有用,因为对于BST,中序遍历的结果会按照升序或降序排列。对于非排序...