`

二叉树的三种遍历java实现

阅读更多

        二叉树的遍历主要有三种:分别是前序遍历,中序遍历,后序遍历。

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 

前序遍历:


中序遍历:


后序遍历:



文章来源:http://smallbug-vip.iteye.com/blog/2280781

  • 大小: 62.8 KB
  • 大小: 59.2 KB
  • 大小: 67.6 KB
分享到:
评论

相关推荐

    二叉树递归中序遍历java

    java编程,二叉树的中序遍历,递归实现

    二叉树 层序遍历 java实现 课程设计

    除了代码实现,课程设计文档可能包含了二叉树的概念解释、层序遍历的算法描述、以及如何使用Java语言实现这一算法的详细步骤。同时,`课程设计.doc`可能包含项目报告,详细阐述了设计目的、实现方法、遇到的问题及...

    完全二叉树的层序遍历-labview

    完全二叉树的层序遍历-labview完全二叉树的层序遍历-labview完全二叉树的层序遍历-labview完全二叉树的层序遍历-labview完全二叉树的层序遍历-labview完全二叉树的层序遍历-labview完全二叉树的层序遍历-labview完全...

    二叉树的建立,遍历 java实现

    对于数据结构,二叉树的实现的了解。通过java实现,包括了建立,查找,遍历,比较的功能。

    二叉树的遍历 java语言实现

    二叉树遍历是访问二叉树中所有节点的过程,通常有三种主要方法:前序遍历、中序遍历和后序遍历。这些遍历方式对于理解和操作二叉树数据结构至关重要。 1. **前序遍历**(Preorder Traversal): - 访问根节点。 -...

    一个基于Java实现的二叉树学习项目 包含二叉树生成、遍历

    二叉树,一个基于Java实现的二叉树学习项目。包含二叉树生成、遍历。适用人群:计算机,电子信息工程、数学等专业的大学生学习二叉树等数据结构,作为“参考资料”使用。 二叉树,一个基于Java实现的二叉树学习项目...

    Java二叉树中序遍历

    中序遍历是二叉树遍历的一种方法,它按照“左-根-右”的顺序访问树中的所有节点,对于理解树的性质和执行某些操作非常有用。本课程设计将详细介绍如何使用Java编程语言实现二叉树的中序遍历。 首先,我们先构建...

    满二叉树的前序遍历C++实现

    因此,满二叉树的前序遍历、中序遍历和后序遍历均可以通过递归方式实现。 以前序遍历为例,满二叉树的前序遍历顺序为:根、左、右。 在具体实现过程中,我们可以通过构造一个满二叉树,然后进行前序遍历来获取遍历...

    JAVA实现二叉树建立、遍历

    Java作为一种强大的面向对象编程语言,提供了丰富的数据结构支持,包括二叉树的实现。 首先,我们来看如何通过先序和中序序列建立二叉树。先序遍历顺序是:根节点 -&gt; 左子树 -&gt; 右子树;中序遍历顺序是:左子树 -&gt; ...

    Java实现二叉树的遍历

    java实现二叉树非递归前序中序后序遍历

    根据二叉树前序遍历和中序遍历的结果输出后序遍历(java)

    在计算机科学中,二叉树是一种常见的...对于实际的编程实现,你需要根据提供的代码和数据进行调整,确保逻辑正确,并遵循二叉树遍历的规则。在进行这类问题的解决时,理解和熟悉二叉树的性质以及各种遍历方法至关重要。

    Java实现二叉树的层次遍历

    在Java编程中,二叉树是一种常见的数据结构,它由节点组成,每个节点都有一个值,并且可以有至多两个子节点,分别称为左子节点和右子节点。本篇文章将详细探讨如何实现二叉树的层次遍历,即按照从根节点到叶子节点的...

    二叉树的遍历-java

    在计算机科学中,二叉树遍历是访问树中所有节点的一种基本操作,通常有三种主要的遍历方式:前序遍历、中序遍历和后序遍历。这些遍历方法在数据结构和算法领域中有着广泛的应用,特别是在编译器设计、搜索算法和数据...

    java实现的二叉树的递归和非递归遍历

    递归是一种函数调用自身的技术,对于二叉树遍历来说,递归方法简洁明了。 1. 前序遍历(根-&gt;左-&gt;右): - 首先访问根节点。 - 然后递归地遍历左子树。 - 最后递归地遍历右子树。 2. 中序遍历(左-&gt;根-&gt;右): ...

    遍历二叉树(java实现)

    二叉树遍历是一种访问二叉树所有节点的方法,通常分为三种主要类型:先序遍历、中序遍历和后序遍历。在Java编程语言中,我们可以使用递归或迭代的方式来实现这些遍历方法。 **先序遍历**(根-左-右)是最常见的遍历...

    [力扣]144. 二叉树的前序遍历java

    二叉树遍历是针对二叉树进行操作的一种基本算法,主要有三种类型:前序遍历、中序遍历和后序遍历。本问题主要关注的是前序遍历,它是二叉树遍历的一种常见方式。 **前序遍历**的顺序是:先访问根节点,然后递归地...

    二叉树的各种遍历

    二叉树的遍历主要有三种方法:前序遍历、中序遍历和后序遍历。接下来,我们将详细探讨这三种遍历方式以及它们的实现。 1. 前序遍历(Preorder Traversal) 前序遍历的顺序是:根节点 -&gt; 左子树 -&gt; 右子树。首先访问...

    java-leetcode题解之第94题二叉树的中序遍历.zip

    中序遍历是二叉树遍历的一种方式,它遵循以下顺序: 1. 遍历左子树 2. 访问根节点 3. 遍历右子树 这种遍历方法在处理二叉搜索树(BST)时特别有用,因为对于BST,中序遍历的结果会按照升序或降序排列。对于非排序...

Global site tag (gtag.js) - Google Analytics