最近看了哈二叉树的demol,呃....仍然有点模糊不懂,呵呵,貌似那个demol的单词也忘记了,问了哈静静同学才记起来
呵呵,不废话了,贴上二叉树的demol 整理了一部分,还有一部分待定,呵呵 以后再修改吧
public class Tree {
private int data;// 数据节点
private Tree left;// 左子树
private Tree right;// 右子树
public Tree(int data) {
this.data = data;
this.left = null;
this.right = null;
}
/**
* @param args
*/
public static void main(String[] args) {
int[] input = { 4, 2, 6, 1, 3, 5, 7 };
Tree tree = createTree(input);
System.out.print("前序遍历:");
preOrder(tree);
System.out.print("\n中序遍历:");
midOrder(tree);
System.out.print("\n后序遍历:");
posOrder(tree);
}
/**
* 创建二叉树,返回根结点
*
* @param input
* @return
*/
public static Tree createTree(int[] input) {
Tree root = null;//用于长时间存储数据,以供temp循环完毕后更改成为原始值
Tree temp = null;//用于动态比较的临时值
for (int i = 0; i < input.length; i++) {
// 创建根节点
if (root == null) {
root = temp = new Tree(input[i]);//给予初始值
} else {
// 回到根结点
temp = root;//在此处保持临时值的原始性
// 添加节点
//循环判断初始值是否和当前比较的值相同,如果相通直接跳出循环
while (temp.data != input[i]) {
//当前循环要比较的值与根节点x进行比较
if (input[i] <= temp.data) {
if (temp.left != null) {
temp = temp.left;
} else {
//如果tree对象里面的temp.left对象为空就将当前循环的对象值放入其中
temp.left = new Tree(input[i]);
}
} else {
if (temp.right != null) {
temp = temp.right;
} else {
temp.right = new Tree(input[i]);
}
}
}
}
}
return root;
}
/**
* 前序遍历
*
* @param tree
*/
public static void preOrder(Tree tree) {
if (tree != null) {
System.out.print(tree.data + " ");
preOrder(tree.left);
preOrder(tree.right);
}
}
/**
* 中序遍历
*
* @param tree
*/
public static void midOrder(Tree tree) {
if (tree != null) {
midOrder(tree.left);
System.out.print(tree.data + " ");
midOrder(tree.right);
}
}
/**
* 后序遍历
*
* @param tree
*/
public static void posOrder(Tree tree) {
if (tree != null) {
posOrder(tree.left);
posOrder(tree.right);
System.out.print(tree.data + " ");
}
}
}
分享到:
相关推荐
本示例"java实现二叉树遍历demo"将通过一个简单的实例来演示这三种遍历方式。 1. **前序遍历**: 前序遍历的顺序是:根节点 -> 左子树 -> 右子树。在代码实现中,通常采用递归的方法。首先访问根节点,然后递归地...
总结来说,"二叉树先序遍历演示demo"是一个适合初学者的实践项目,通过动态生成随机二叉树并进行先序遍历,有助于理解和掌握二叉树的基本概念和操作。对于希望深入学习数据结构和算法的人来说,这是一个很好的起点。
总的来说,这个Java项目提供了一个二维矩形装箱问题的解决方案,通过二叉树优化了查找和装箱的过程,适用于处理大量箱子的装载问题。理解和掌握这个算法可以帮助我们在实际问题中更好地优化空间利用率,提升效率。
在Java中,我们可以使用类来表示二叉树及其节点。例如,上述代码中的`BinaryTree`类和`HeroNode`类就是用来构建和操作二叉树的。 在二叉树中,有一些关键术语: 1. **节点**:二叉树的基本单元,包含数据(节点值...
Java实现二叉树的深度优先遍历和广度优先遍历算法示例 本文主要介绍了Java实现二叉树的深度优先遍历和广度优先遍历算法,结合实例形式详细分析了二叉树的定义、深度优先遍历与广度优先遍历算法原理与相关操作实现...
在Java编程语言中,排序是数据处理和算法分析的核心部分。以下是对标题和描述中提到的各种排序算法的详细解释: 1. **冒泡排序(Bubble Sort)**:冒泡排序是一种简单直观的排序算法,它重复地遍历待排序的数列,一...
本教程将详细讲解如何使用Java进行决策树的实现,以及“Demo2”可能涉及的具体内容。 1. **决策树的基本概念** - **决策树结构**:决策树由节点和边组成,根节点代表问题,内部节点表示特征,叶节点代表决策结果。...
本教程将基于`java 决策树Demo1`来深入探讨决策树的基本概念、工作原理以及如何在Java中实现。 决策树是一种图形模型,它通过一系列的if-else条件判断来模拟决策过程。每个内部节点代表一个特征或属性测试,每个...
在Java中,可以使用`java.util.TreeSet`或`java.util.TreeMap`来实现基于二叉树的集合操作。二叉树操作包括插入、删除、查找以及遍历(前序、中序和后序)。 3. **递归**:递归是一种编程技术,函数在其定义中调用...
本资料包"Java各种排序算法Demo"聚焦于通过Java代码展示不同的排序算法,旨在帮助开发者理解和应用这些算法。 首先,我们来探讨几种基础的排序算法: 1. **冒泡排序**:冒泡排序是一种简单的排序算法,通过重复...
在这个主题中,我们将深入探讨Java实现的三种基本数据结构:堆栈(Stack)、队列(Queue)和列表(List)。这些概念是计算机科学的核心部分,对理解和解决复杂问题至关重要。 1. **堆栈(Stack)**: - 堆栈是一种...
在Java编程中,多叉树是一种非线性数据结构,每个节点可以有多个子节点,与二叉树(每个节点最多有两个子节点)相比,它提供了更广泛的灵活性。本篇文章将深入探讨如何在Java中实现多叉树以及其遍历方法。 首先,...
Java是世界上最流行的编程语言之一,尤其在企业级应用开发领域占据主导地位。本教程涵盖了从基础到高级,再到...结合"java_demo"中的示例代码进行实践,将理论知识转化为实际技能,将使你更熟练地驾驭这门强大的语言。
`TreeDemo1.java`可能展示了基本的二叉树(Binary Tree)创建,其中每个节点最多有两个子节点,分为左子节点和右子节点。在二叉树中,通常会实现插入、删除和搜索节点的操作。例如,二叉搜索树(Binary Search Tree,...
二叉树是每个节点最多有两个子节点的特殊树,Java中的TreeSet和TreeMap类就是基于红黑树实现的。 6. **图**:图是由节点和边构成的数据结构,用于表示对象之间的关系。Java中虽然没有直接的图数据结构,但可以通过...
2. **数据结构**:数据结构是算法的基础,Java面试中常涉及数组、链表、栈、队列、树(二叉树、平衡树如AVL和红黑树)、图等。理解它们的特性、操作时间复杂度以及如何在实际问题中应用是考察技术深度的重要部分。 ...
- **树遍历**:在某些特定情况下,DFS也可用于遍历二叉树结构,例如在商品分类或用户关系图中。 - **算法实现**:DFS可以用递归或栈来实现,遍历过程中标记已访问节点,避免无限循环。 5. **源码软件**: - **...
逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)以及集合和队列等抽象数据类型。 存储结构(物理结构):描述数据在计算机中如何...
压缩包中的`demo_simple_girdtree.html`可能是示例代码或教程,它可能展示了如何在Java Swing中创建一个简单的网格树视图。Swing提供了一个名为`JTree`的组件,允许用户在图形用户界面中交互地查看和操作树数据结构...