前序遍历(DLR) 前序遍历也叫做先根遍历,可记做根左右。
中序遍历(LDR) 中序遍历也叫做中根遍历,可记做左根右。
后序遍历(LRD) 后序遍历也叫做后根遍历,可记做左右根。
中序遍历(LDR) 中序遍历也叫做中根遍历,可记做左根右。
后序遍历(LRD) 后序遍历也叫做后根遍历,可记做左右根。
import java.util.LinkedList; import java.util.List; /** * 功能:把一个数组的值存入二叉树中,然后进行3种方式的遍历 * * 参考资料0:数据结构(C语言版)严蔚敏 * * 参考资料1:http://zhidao.baidu.com/question/81938912.html * * 参考资料2:http://cslibrary.stanford.edu/110/BinaryTrees.html#java * * @author ocaicai@yeah.net @date: 2011-5-17 * */ public class BinTreeTraverse2 { private int[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; private static List<Node> nodeList = null; /** * 内部类:节点 * * @author ocaicai@yeah.net @date: 2011-5-17 * */ private static class Node { Node leftChild; Node rightChild; int data; Node(int newData) { leftChild = null; rightChild = null; data = newData; } } public void createBinTree() { nodeList = new LinkedList<Node>(); // 将一个数组的值依次转换为Node节点 for (int nodeIndex = 0; nodeIndex < array.length; nodeIndex++) { nodeList.add(new Node(array[nodeIndex])); } // 对前lastParentIndex-1个父节点按照父节点与孩子节点的数字关系建立二叉树 for (int parentIndex = 0; parentIndex < array.length / 2 - 1; parentIndex++) { // 左孩子 nodeList.get(parentIndex).leftChild = nodeList .get(parentIndex * 2 + 1); // 右孩子 nodeList.get(parentIndex).rightChild = nodeList .get(parentIndex * 2 + 2); } // 最后一个父节点:因为最后一个父节点可能没有右孩子,所以单独拿出来处理 int lastParentIndex = array.length / 2 - 1; // 左孩子 nodeList.get(lastParentIndex).leftChild = nodeList .get(lastParentIndex * 2 + 1); // 右孩子,如果数组的长度为奇数才建立右孩子 if (array.length % 2 == 1) { nodeList.get(lastParentIndex).rightChild = nodeList .get(lastParentIndex * 2 + 2); } } /** * 先序遍历 * * 这三种不同的遍历结构都是一样的,只是先后顺序不一样而已 * * @param node * 遍历的节点 */ public static void preOrderTraverse(Node node) { if (node == null) return; System.out.print(node.data + " "); preOrderTraverse(node.leftChild); preOrderTraverse(node.rightChild); } /** * 中序遍历 * * 这三种不同的遍历结构都是一样的,只是先后顺序不一样而已 * * @param node * 遍历的节点 */ public static void inOrderTraverse(Node node) { if (node == null) return; inOrderTraverse(node.leftChild); System.out.print(node.data + " "); inOrderTraverse(node.rightChild); } /** * 后序遍历 * * 这三种不同的遍历结构都是一样的,只是先后顺序不一样而已 * * @param node * 遍历的节点 */ public static void postOrderTraverse(Node node) { if (node == null) return; postOrderTraverse(node.leftChild); postOrderTraverse(node.rightChild); System.out.print(node.data + " "); } public static void main(String[] args) { BinTreeTraverse2 binTree = new BinTreeTraverse2(); binTree.createBinTree(); // nodeList中第0个索引处的值即为根节点 Node root = nodeList.get(0); System.out.println("先序遍历:"); preOrderTraverse(root); System.out.println(); System.out.println("中序遍历:"); inOrderTraverse(root); System.out.println(); System.out.println("后序遍历:"); postOrderTraverse(root); } }
发表评论
-
文件上传 下载 解析 相对路径
2014-12-16 16:29 2052有点坑吧,弄这么一个简单的东西弄了一天多,身边还有大神指导着, ... -
发送邮件
2014-10-15 11:29 630import org.apache.commons.m ... -
Enum用法
2014-08-06 10:27 725以前的时候知道enum,但 ... -
红黑树
2014-07-24 13:51 540红黑树 红黑树是一种自平衡二叉查找树,是在计算机科学中用到的 ... -
Java中的instanceof关键字
2014-07-21 11:14 404Java中的instanceof关键字 [size=larg ... -
Comparable接口
2014-07-21 11:01 457因为在学红黑树的时候用到了Comparable接口,故此学习一 ... -
二叉查找树
2014-07-15 10:57 562二叉排序树(Binary Sort Tree)又称二叉查找树( ... -
Java中如何写代码实现无标题无边框的窗体能够用鼠标拖动改变窗口大小
2014-01-23 17:16 1520import java.awt.*; import java ... -
Swing基础
2014-01-10 10:22 386JFrame: frame = new JFrame(); ... -
游戏音效素材大全下载 - 3000首高清无损-按分类整理
2014-01-09 18:03 438因为我看到国外很多素材,但是国内不多,我希望来做好这个事情。 ... -
Swing 键盘练习
2014-01-09 17:59 554在swing界面中写一个键盘,使用前记得放置背景图片 imp ... -
JAVA的Socket的聊天器
2014-01-09 11:06 435这是刚开始学习java网络编程的时候做的一个东东,,局域网聊天 ... -
驱动打印
2013-12-27 15:16 605java驱动打印代码: PrintTest.print(pr ... -
java程序打包
2013-12-27 15:17 489打包一般分为两种,一种是B/S架构打包,一种是C/S打包,大同 ... -
读取文件夹下的所有文件
2013-12-20 13:19 431文章来源:http://www.blogjava.net/ba ... -
实现天气预报功能
2013-12-02 10:30 533import java.io.BufferedReader; ... -
JMF播放AVI格式的视频
2013-12-02 10:26 703public class Conver { publ ... -
JMF视频播放器
2013-12-02 10:24 1070import java.awt.BorderLayout; ...
相关推荐
二叉树三种遍历算法的源码背诵版...希望对大家有用
数据结构 二叉树三种遍历的非递归算法(背诵版). 数据结构 二叉树三种遍历的非递归算法(背诵版). 数据结构 二叉树三种遍历的非递归算法(背诵版).
大连理工大学数据结构上机 二叉树三种遍历,先序和中序建立二叉树,后序和中序建立二叉树,二叉搜索树查找,删除,插入
数据结构二叉树三种遍历动画演示
C语言二叉树三种遍历算法及其广义表表示 VS2012编写 基于先序遍历的构造算法:输入是二叉树的先序序列,但必须在其中加入虚结点以示空指针的位置。假设虚结点输入时用’.’字符表示。 分别利用先序遍历、中序遍历、...
二叉树三种遍历的非递归算法(背诵版)kanakn卡看八不错的
二叉树 前序遍历 中序遍历 后序遍历
【先序遍历】:先访问根节点,然后先序遍历左子树,再先序遍历右子树! 【中序遍历】:中序遍历左子树,然后访问根节点,再中序遍历右子树! 【后序遍历】:后序遍历左子树,然后后序遍历右子树,再访问根节点!
二叉树的三种遍历的非递归算法背诵版,关于数据结构课件总结
二叉树三种遍历算法的源码背诵版_
二叉树三种遍历的非递归算法(背诵版) 很简单的
二叉树的三种遍历算法,在哦参考了其他同志的代码后,需要坐下改进哦。
c语言中关于二叉树的先序遍历,链表的创建
建立二叉树,实现二叉树的先序、中序、后序的递归遍历算法,输出遍历结果。 实现二叉树的先序、中序、后序和层次遍历的非递归算法,输出遍历结果。
完全二叉树的层序遍历-labview完全二叉树的层序遍历-labview完全二叉树的层序遍历-labview完全二叉树的层序遍历-labview完全二叉树的层序遍历-labview完全二叉树的层序遍历-labview完全二叉树的层序遍历-labview完全...
用C++写的,包括二叉树的构建,二叉树的先序遍历、中序遍历和后序遍历非递归算法。
实现二叉树的层次遍历实现二叉树的层次遍历实现二叉树的层次遍历实现二叉树的层次遍历