package com.binarytree.test;
/**
* 遍历二叉树
* @author ncs
*
*/
public class BinaryTree {
public static void main(String[] args) {
BinaryTree tree = new BinaryTree();
TreeNode node = tree.createBinaryTree();
// 先序遍历。。。。。。。
System.out.println("**************************");
System.out.println("先序遍历。。。。。。。");
tree.xianIterator(node);
System.out.println("");
// 中序遍历。。。。。。。
System.out.println("**************************");
System.out.println("中序遍历。。。。。。。");
tree.zhongIterator(node);
System.out.println("");
// 后续遍历。。。。。。。
System.out.println("**************************");
System.out.println("后序遍历。。。。。。。");
tree.houIterator(node);
}
//创建二叉树
public TreeNode createBinaryTree() {
TreeNode D = new TreeNode("D", null, null);
TreeNode B = new TreeNode("B", D, null);
TreeNode E = new TreeNode("E", null, null);
TreeNode F = new TreeNode("F", null, null);
TreeNode C = new TreeNode("C", E, F);
TreeNode A = new TreeNode("A", B, C);
return A;
}
//先序遍历NLR N(Node)、L(Left subtree)和R(Right subtree)
public void xianIterator(TreeNode node) {
this.printNode(node);
if (node.getLeftNode() != null) {
this.xianIterator(node.getLeftNode());
}
if (node.getRightNode() != null) {
this.xianIterator(node.getRightNode());
}
}
//中序遍历LNR
public void zhongIterator(TreeNode node) {
if (node.getLeftNode() != null) {
this.zhongIterator(node.getLeftNode());
}
this.printNode(node);
if (node.getRightNode() != null) {
this.zhongIterator(node.getRightNode());
}
}
//后续遍历LRN
public void houIterator(TreeNode node) {
if (node.getLeftNode() != null) {
this.houIterator(node.getLeftNode());
}
if (node.getRightNode() != null) {
this.houIterator(node.getRightNode());
}
this.printNode(node);
}
public void printNode(TreeNode node) {
System.out.print(node.getData());
}
}
class TreeNode {
private String data;
private TreeNode leftNode;
private TreeNode rightNode;
public TreeNode(String data, TreeNode leftNode, TreeNode rightNode) {
this.data = data;
this.leftNode = leftNode;
this.rightNode = rightNode;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
public TreeNode getLeftNode() {
return leftNode;
}
public void setLeftNode(TreeNode leftNode) {
this.leftNode = leftNode;
}
public TreeNode getRightNode() {
return rightNode;
}
public void setRightNode(TreeNode rightNode) {
this.rightNode = rightNode;
}
}
- 大小: 9.4 KB
分享到:
相关推荐
"按层次遍历二叉树的算法" 按层次遍历二叉树的算法是指从树的根结点开始,逐层遍历树的所有结点,直到遍历完整个树。这种遍历方式可以分为两种:宽度优先遍历(Breadth-First Traversal)和深度优先遍历(Depth-...
按层次遍历二叉树算法思想与实现 一、按层次遍历二叉树的定义与特点 按层次遍历二叉树是一种常见的树遍历算法,顾名思义,即按照树的层次结构对树中的结点进行遍历。这种遍历方式的特点是,先访问当前层次的所有...
"按层次遍历二叉树数据结构课程设计" 本知识点主要介绍了按层次遍历二叉树的算法设计和实现,包括二叉树的存储结构设计、主要算法设计、测试用例设计和调试报告等。 一、问题描述和任务定义 按层次遍历二叉树是指...
树和二叉树-层序遍历二叉树 在计算机科学中,树和二叉树是很重要的数据结构概念。我们可以使用链表来存储二叉树,并使用层序遍历算法来遍历它。层序遍历二叉树的算法可以分为三步:首先,建立二叉树的链表存储结构...
在IT领域,尤其是在数据结构与算法的学习中,中序遍历二叉树的非递归算法是一个关键且实用的知识点。通常,我们首先通过递归来实现二叉树的遍历,但递归方法可能因深度过大导致栈溢出,因此掌握非递归版本的遍历算法...
java实现创建二叉树,并且遍历二叉树(此处使用递归方式遍历); 创建二叉树的方式有很多,此处使用线性的链表转化成二叉树,链表节点的顺序就是前序遍历的顺序,链表中的null值,代表二叉树左节点或者右节点为null...
层次遍历二叉树
非递归遍历二叉树是一种不依赖递归函数来访问树的所有节点的方法,它通常通过栈或队列等数据结构来实现。下面我们将详细探讨非递归遍历二叉树的先序、中序和后序策略。 先序遍历是二叉树遍历的一种方法,其顺序为:...
二叉树的遍历二叉树的遍历二叉树的遍历二叉树的遍历二叉树的遍历
递归遍历二叉树、c语言以及数据结构均要用到,我还会上传非递归的··
逐层遍历二叉树的结点~~~~~~~~~
按层次遍历二叉树
非递归中序遍历二叉树
### 遍历二叉树的方法 在计算机科学中,二叉树是一种常见的数据结构,它具有丰富的应用场景,如文件系统、编译器等。本文将详细介绍二叉树的几种遍历方法:前序遍历、中序遍历、后序遍历以及层序遍历,并给出相应的...
### 遍历二叉树的六种算法 在计算机科学中,二叉树是一种重要的数据结构,广泛应用于各种算法和程序设计中。对于二叉树的遍历,主要有三种基本方式:先序遍历、中序遍历和后序遍历。除了这三种基本的递归遍历方法外...
遍历二叉树程序,亲自调试,注释详尽,有不懂的随时和大家交流,希望能帮到大家~
不用栈 非递归后序遍历二叉树 有mark标志
用递归和不递归的先序,中序和后序遍历二叉树。
C++ 遍历二叉树实例详解 C++ 遍历二叉树实例详解是指使用 C++ 语言来遍历二叉树的实例实现。二叉树是一种常用的数据结构,广泛应用于计算机科学和软件工程中。遍历二叉树是指对二叉树的所有节点进行访问,常用的...
数据结构上机实验——遍历二叉树 在计算机科学中,二叉树是一种重要的数据结构,遍历二叉树是指按某种次序访问二叉树中的结点,使每个结点访问一次且仅访问一次。本文将详细介绍二叉树的遍历算法,包括先序、中序、...