二叉树的遍历主要有三种:分别是前序遍历,中序遍历,后序遍历。
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编程,二叉树的中序遍历,递归实现
完全二叉树的层序遍历-labview完全二叉树的层序遍历-labview完全二叉树的层序遍历-labview完全二叉树的层序遍历-labview完全二叉树的层序遍历-labview完全二叉树的层序遍历-labview完全二叉树的层序遍历-labview完全...
对于数据结构,二叉树的实现的了解。通过java实现,包括了建立,查找,遍历,比较的功能。
改编自csdn上的一份流行版本,增加层序遍历,增加大量注释,附有工程文件、课程设计文档。
二叉树的遍历计算,常用的数据结构 作为中转,存放这里 主要是学习里面怎样遍历二叉树。
一个简单的课程设计,使用Java来实现二叉树的中序遍历
二叉树的前序遍历、中序遍历、后序遍历的递归和非递归方法的java实现。
因此,满二叉树的前序遍历、中序遍历和后序遍历均可以通过递归方式实现。 以前序遍历为例,满二叉树的前序遍历顺序为:根、左、右。 在具体实现过程中,我们可以通过构造一个满二叉树,然后进行前序遍历来获取遍历...
二叉树的遍历 基于Java实现的二叉树的创建以及三种遍历.zip基于Java实现的二叉树的创建以及三种遍历.zip基于Java实现的二叉树的创建以及三种遍历.zip
java实现二叉树非递归前序中序后序遍历
给定先序中序序列,递归建立二叉树,并遍历
二叉树遍历分为三种:前序、中序、后序,其中序遍历最为重要。为啥叫这个名字?是根据根节点的顺序命名的。 比如上图正常的一个满节点,A:根节点、B:左节点、C:右节点,前序顺序是ABC(根节点排最先,然后同级先...
二叉树的前序遍历 给定一个二叉树,返回它的前序遍历 示例: 思路 前序遍历1.先访问根节点,把元素加入到List中; 2.递归遍历左子树,把左子树的遍历结果加入到List中; 3.递归遍历右子树,把右子树的遍历结果加入到...
二叉树的后序遍历(java代码).docx
java 数据结构 源代码 总汇 包括一些常用的方法和算法。...内容包括各种二叉树,查询遍历方法。 按照实现功能和效果分类。 非常适合初学者查询,学习,做参考来完成自己要完成的功能 希望能够帮助到一些初学者。
关于二叉树的实现与遍历,网上已经有很多文章了,包括C, C++以及JAVA等。鉴于python做为脚本语言的简洁性,这里写一篇小文章用python实现二叉树,帮助一些对数据结构不太熟悉的人快速了解下二叉树。本文主要通过...
二叉树的建立遍历,输入后可以输出二叉树的中序和后序遍历。
NULL 博文链接:https://sun810.iteye.com/blog/1261373
Java基础复习笔记08数据结构-二叉树和二叉树的遍历。