import java.io.*;
import java.util.Stack;
public class myTest {
private myTree tree;
/**
*二叉树的插入,参数为(关键字,数据)
*
**/
public void insert(int key, int data)
{
if(tree == null)
{
tree = new myTree();
tree.key = key;
tree.data = data;
}
else
{
myTree newTree = new myTree();
newTree.key = key;
newTree.data = data;
myTree parent = tree;
while(true)
{
if( newTree.key < parent.key)
{
if( parent.leftChild == null)
{
parent.leftChild = newTree;
return;
}
else
{
parent = parent.leftChild;
}
}
else if( newTree.key > parent.key)
{
if(parent.rightChild == null)
{
parent.rightChild = newTree;
return;
}
else
{
parent = parent.rightChild;
}
}
}
}
}
/**
* 二叉树的查找,参数为(关键字),返回值为 myTree的一个实例
*
* **/
public myTree find(int key)
{
if( tree == null ) return null;
myTree curr = new myTree();
curr.key = key;
myTree parent = tree;
while(true)
{
if( parent == null)
{
return null;
}
else if( curr.key == parent.key)
{
return parent;
}
else if( curr.key > parent.key)
{
parent = parent.rightChild;
}
else if( curr.key < parent.key)
{
parent = parent.leftChild;
}
}
}
/*
*
* 递归的二叉树中序遍历
*
*
*/
private static void midOrder(myTree tree)
{
if(tree != null )
{
midOrder(tree.leftChild);
System.out.println(tree+","+tree.key+","+tree.data);
midOrder(tree.rightChild);
}
}
/*
* 前序遍历
*/
private static void frontOrder(myTree tree)
{
if(tree != null)
{
System.out.println(""+tree.key+" , "+tree.data);
frontOrder(tree.leftChild);
frontOrder(tree.rightChild);
}
}
public static void main(String[] args)
{
System.out.println("Tree view Begin");
myTest t1 = new myTest();
t1.insert(8,25);
t1.insert(5,9);
t1.insert(58,87);
t1.insert(13,82);
t1.insert(4,8);
t1.insert(12,54);
t1.insert(53,123);
t1.insert(56,47);
t1.insert(2,75);
t1.insert(34,5);
t1.insert(6,23);
System.out.println("现在开始遍历:");
midOrder2(t1.tree);
midOrder(t1.tree);
}
}
class myTree{
int key;
int data;
myTree leftChild;
myTree parentChild;
myTree rightChild;
public String toString(){
return "haha";
}
}
分享到:
相关推荐
在给定的Java二叉树课程设计中,我们需要理解二叉树的概念,熟悉其性质和操作,以及如何在Java中实现这些操作。通过创建用户界面,用户可以输入数据,程序则需要将这些数据转换成二叉树的图形表示,并支持插入、删除...
编写先序遍历二叉树的非递归算法程序,要求: (1)以二叉链表建立二叉树。 (2)输出遍历的结点序列。 (3)有实例验算。
在这个任务中,我们将关注如何使用二叉链表来构建二叉树,并对其进行先序、中序和后序遍历。此外,我们还将探讨如何交换二叉树中所有节点的左右孩子。 首先,二叉链表是二叉树的一种常见存储方式,每个节点包含两个...
该算法使用 C 语言实现,通过建立二叉树、先序遍历输出结点数据和后序遍历交换左右子树三个步骤来实现。 一、建立二叉树 首先,需要建立一个二叉树。该算法使用队列来存储结点指针,以便便捷地访问和遍历二叉树。...
本文将深入探讨标题所提及的"二叉树先序遍历",并结合描述中的"随机建树及先序演示程序"进行详细讲解。 首先,我们来理解什么是二叉树。二叉树是由节点(或称为顶点)和边构成的,每个节点最多有两个子节点,分别被...
[问题描述] 建立二叉树,并输出二叉树的先序,中序和后序遍历序列,以及二叉树的叶子数。 [基本要求] 要求根据读取的元素建立二叉树,能输出各种遍历。 [实现提示] 可通过输入带空格的前序序列建立二叉链表。
在讲解Java实现二叉树的先序、中序、后序、层次遍历时,我们需要先了解几个关键知识点。 首先,二叉树是一种非常基础且重要的数据结构,每个节点最多有两棵子树,通常称这两棵子树为“左子树”和“右子树”。二叉树...
### 数据结构课程设计——线索二叉树算法的实现 #### 一、课题描述与任务分析 **课题描述:** 本次课程设计的主要目标是通过编程实现二叉树的线索化过程,包括前序、中序和后序线索化,并能够对线索化后的二叉树...
在Java编程语言中,我们可以使用递归或迭代的方式来实现这些遍历方法。 **先序遍历**(根-左-右)是最常见的遍历方式之一,它首先访问根节点,然后递归地遍历左子树,最后遍历右子树。在Java中,可以使用以下递归...
Java作为一种强大的面向对象编程语言,提供了丰富的数据结构支持,包括二叉树的实现。 首先,我们来看如何通过先序和中序序列建立二叉树。先序遍历顺序是:根节点 -> 左子树 -> 右子树;中序遍历顺序是:左子树 -> ...
在计算机科学领域,数据结构是基础且至关重要的概念,它涉及到如何有效地组织和管理数据,以便于高效地访问和操作。本资料集专注于数据结构的第六章内容,特别是关于二叉树及其二叉链表存储结构的讲解。二叉树是一种...
掌握二叉树算法对于学习面向对象编程、迭代、排序和搜索算法(如冒泡排序、选择排序、快速排序等)至关重要,同时也对理解C++、Java等编程语言、数据库操作、底层知识、网络编程、多线程和多进程等高级主题有深远...
附件是Java输出二叉树先序遍历代码,先序遍历的顺序是:首先访问根节点,然后递归地先序遍历左子树,最后递归地先序遍历右子树。 TreeNode 类定义了二叉树的节点,每个节点包含一个整数值 val 和指向左右子节点的...
1. 建立二叉树:可以通过输入数据序列构建二叉树,数据可以以满二叉树序号和数据元素的形式给出,或者采用递归方法,用“#”代表空节点。 2. 求二叉树的高度:从根节点开始,每次向下遍历到叶子节点,高度即为路径上...
在`main`方法中,创建了一个简单的二叉树并用不同的遍历方式进行打印输出。 总结来说,二叉树是一种重要的数据结构,通过先序、中序和后序遍历可以有效地访问和操作树中的节点。理解这些概念对于学习数据结构和算法...
这个压缩包“数据结构 二叉树所有代码”显然提供了关于二叉树的各种操作的编程实现,可能是用C、C++、Java或Python等常见编程语言编写的。下面将详细介绍二叉树及其相关的知识点。 二叉树是一种特殊的树形数据结构...
分析:所谓“镜像”就是从镜子里看到的样子。我们可以画一棵二叉树,然后画出该...遍历我们可以使用先序遍历,首先判断当前根结点是否为叶子结点,若非叶子结点,则交换左右孩子,然后再分别对左右孩子进行相同的操作。
编写递归算法,计算二叉树中叶子结点的数目