首先来看看树节点的定义:
TNode.java:
package datastructure.tree;
/**
*树节点
* @author yunfeiyang
*/
public class TNode<E> {
private TNode<E> LChild = null, RChild = null;
private E data;
/**
* default node
*/
public TNode() {
data = null;
left(null);
right(null);
}
/**
* node with data
* @param data data of the node
*/
public TNode(E data) {
this.data = data;
left(null);
right(null);
}
/**
* set data of the node
* @param data data of the node
*/
public void data(E data) {
this.data = data;
}
/**
* get data of the node
* @return data of the node
*/
public E data() {
return data;
}
/**
*set the reference of left child
* @param left reference of left child
*/
public void left(TNode<E> left) {
LChild = left;
}
/**
* get reference of left child
* @return reference of left child
*/
public TNode<E> left() {
return LChild;
}
/**
*set the reference of right child
* @param reference of right child
*/
public void right(TNode<E> left) {
RChild = left;
}
/**
* get reference of right child
* @return reference of right child
*/
public TNode<E> right() {
return RChild;
}
@Override
public String toString() {
String s = "a node with value:" + data.toString();
return s;
}
}
其次,树的遍历方法写在一个类当中:
TreeOutput.java:
package datastructure.tree;
import java.util.ArrayList;
/**
*遍历并输出树节点的值
* @author yunfeiyang
* @version 1.0
*/
public class TreeOutput<E> {
/**
* 中序遍历树节点
* @param root 树的根节点
* @param separate 分隔符
*/
public void inorderOutput(TNode<E> root, String separate) {
if (root == null) {
return;
}
inorderOutput(root.left(), separate);
System.out.print(root.data() + separate);
inorderOutput(root.right(), separate);
}
/**
* 后续遍历树节点
* @param root 树的根节点
* @param separate 分隔符
*/
public void postorderOutput(TNode<E> root, String separate) {
if (root == null) {
return;
}
postorderOutput(root.left(), separate);
postorderOutput(root.right(), separate);
System.out.print(root.data() + separate);
}
/**
* 前序遍历树节点
* @param root 数的根节点
* @param separate 分隔符
*/
public void preorderOutput(TNode<E> root, String separate) {
if (root == null) {
return;
}
System.out.print(root.data() + separate);
preorderOutput(root.left(), separate);
preorderOutput(root.right(), separate);
}
/**
* 层次遍历树节点
* @param root 树的根节点
* @param separate 分隔符
*/
public void levelorderOutput(TNode<E> root, String separate) {
if (root == null) {
return;
}
ArrayList<TNode<E>> queue=new ArrayList<TNode<E>>();
queue.add(root);
while(!queue.isEmpty())
{
TNode<E> head=queue.remove(0);
System.out.print(head.data()+separate);
if(head.left()!=null)
{
queue.add(head.left());
}
if(head.right()!=null)
{
queue.add(head.right());
}
}
}
}
最后写测试方法来测试下:
Main.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package datastructure.tree.test;
import datastructure.tree.TNode;
import datastructure.tree.TreeOutput;
/**
*
* @author Administrator
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Main main = new Main();
TreeOutput<Integer> output = new TreeOutput<Integer>();
TNode<Integer> newNode = new TNode<Integer>(0);
TNode<Integer> root = main.initData(newNode);
System.out.print("中序遍历树节点:");
output.inorderOutput(root, ",");
System.out.println();
System.out.print("后序遍历树节点:");
output.postorderOutput(root, ",");
System.out.println();
System.out.print("前序遍历树节点:");
output.preorderOutput(root, ",");
System.out.println();
System.out.print("层次遍历树节点:");
output.levelorderOutput(root, ",");
System.out.println();
}
private TNode<Integer> initData(TNode<Integer> root) {
TNode<Integer> result=null;
if (root == null) {
result=root;
} else {
TNode<Integer> leftNode = new TNode<Integer>(10);
root.left(leftNode);
TNode<Integer> rightNode = new TNode<Integer>(20);
root.right(rightNode);
leftNode.left(new TNode<Integer>(30));
leftNode.right(new TNode<Integer>(40));
rightNode.left(new TNode<Integer>(50));
rightNode.right(new TNode<Integer>(60));
result= root;
}
return result;
}
}
分享到:
相关推荐
本篇文章将深入探讨如何在Java中实现多叉树以及其遍历方法。 首先,我们需要定义一个多叉树节点类。这个类通常包含一个数据字段来存储节点值,以及一个ArrayList或LinkedList等动态数组来存储子节点。以下是一个...
本示例代码展示了如何使用Java实现一个简单的二叉树,并提供了三种基本的遍历方法:先序遍历、中序遍历和后序遍历。 首先,我们创建一个名为`BinTreeTraverse2`的类,它包含一个内部类`Node`来表示二叉树的节点。每...
java实现二叉树非递归前序中序后序遍历
本示例"java实现二叉树遍历demo"将通过一个简单的实例来演示这三种遍历方式。 1. **前序遍历**: 前序遍历的顺序是:根节点 -> 左子树 -> 右子树。在代码实现中,通常采用递归的方法。首先访问根节点,然后递归地...
在Java中,实现二叉树的先序遍历可以通过递归来完成。先序遍历的顺序是:首先访问根节点,然后递归地先序遍历左子树,最后递归地先序遍历右子树。 在这段代码中,Node类定义了二叉树的节点,包含数据域和指向左右子...
### Java实现二叉树遍历算法详解 #### 一、引言 在计算机科学中,二叉树是一种常用的数据结构,广泛应用于各种算法和数据处理场景。为了更好地理解和操作二叉树,掌握其遍历算法至关重要。本文将详细介绍如何使用...
在计算机科学和程序设计领域,...通过Java语言实现二叉树的中序遍历是一个极佳的练习,它不仅帮助程序员熟悉数据结构的实现,还加深了对递归思想的理解。对于希望提升编程能力的开发者而言,这部分知识是不可或缺的。
本课程设计将详细介绍如何使用Java编程语言实现二叉树的中序遍历。 首先,我们先构建二叉树的节点类(Node),它包含一个数据字段(data)以及指向左子节点(left)和右子节点(right)的引用: ```java public ...
在Java编程中,遍历文件目录并生成树结构的文本文件是一个常见的任务,尤其是在处理大量文件数据时。这个任务可以通过使用Java的`java.io.File`类及其相关API来实现。`Dir.class`和`Dir.java`是这次操作的核心文件,...
二叉树的遍历方式主要有四种:前序遍历、中序遍历、后序遍历和层次遍历。 前序遍历的顺序是:先访问根节点,然后访问左子树,最后访问右子树。前序遍历、中序遍历和后序...JAVA实现二叉树遍历 Python实现二叉树遍历
在Java中,使用递归实现二叉树的DFS遍历(前序、中序、后序)如下: ```java class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } } // 前序遍历 public void ...
本文将深入探讨Java中实现的四个核心图算法:深度优先遍历(DFS)、广度优先遍历(BFS)、最短路径算法以及最小生成树算法。 首先,**深度优先遍历(DFS)**是一种用于遍历或搜索树或图的算法。它从根节点开始,尽...
Java实现遍历树形菜单两种实现代码分享 Java实现遍历树形菜单是指在Java编程语言中实现遍历树形菜单的功能,树形菜单是一种常见的用户界面元素,用于展示层次结构的数据。下面将介绍两种实现遍历树形菜单的代码分享...
综上所述,通过本篇文章的介绍,我们不仅了解了如何使用Java遍历文件夹中的所有文件并将它们以树形结构输出的基本实现,还深入探讨了相关的核心概念和技术细节。这对于理解和掌握文件系统的操作具有重要的意义。
### Java版二叉树遍历非递归程序详解 #### 一、引言 在计算机科学领域中,二叉树是一种常见的数据结构,其在算法设计、数据存储以及搜索等方面有着广泛的应用。对于二叉树的操作,遍历是其中非常重要的一项技术。...
以下是使用JAVA实现的前序遍历代码示例: ```java public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } } public void preorderTraversal(TreeNode root) { if ...
本教程将详细讲解这两个主题,包括Java如何进行文件遍历,以及如何使用非递归方法实现树的前序、中序和后序遍历。 首先,我们来看Java文件遍历。在Java中,`java.io.File`类提供了对文件和目录的操作。通过`list()`...
Java 递归算法遍历部门代码示例是指使用 Java 语言实现的递归算法来遍历部门树结构的示例代码。该示例代码主要用于介绍如何使用 Java 递归算法来遍历部门树结构,具有较高的借鉴价值。 知识点一:递归算法 递归...
在给定的代码中,作者提供了一个完整的Java实现,包括递归和非递归的前序、中序和后序遍历算法。下面将对这些算法进行详细的解释和分析。 递归前序遍历 递归前序遍历的算法可以描述为:访问当前节点,然后递归地...
本文将深入探讨如何利用Java语言和MySQL数据库来实现这一功能,解析给定代码片段,并提供一种高效遍历树形结构的方法。 ### 一、理解树形结构 树形结构是一种非线性的数据结构,它由节点和边组成,其中每个节点...