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);
}
}
分享到:
相关推荐
(3)中序遍历二叉树:非递归算法(最好也能实现先序,后序非递归算法)。 (4)求二叉树的高度 。 (5)求二叉树的叶子个数。 (6)对于树中每一个元素值为x的结点,删去以它为根的子树,并释放相应的空间。 (8...
二叉树先序、中序、后序遍历非递归算法,简述了二叉树的基本算法。
用C++写的,包括二叉树的构建,二叉树的先序遍历、中序遍历和后序遍历非递归算法。
定义二叉树类,封装构造二叉树操作、遍历操作. 实现由先序、中序序列构造二叉树的算法 实现由后序、中序序列构造二叉树的算法
用二叉树先序遍历算法创建一组数据构成的二叉树排序,然后用二叉树中序遍历算法实现数据排序输出。
建立二叉树,实现二叉树的先序、中序、后序的递归遍历算法,输出遍历结果。 实现二叉树的先序、中序、后序和层次遍历的非递归算法,输出遍历结果。
编写先序遍历二叉树的非递归算法程序,要求: (1)以二叉链表建立二叉树。 (2)输出遍历的结点序列。 (3)有实例验算。
用C++写的二叉树先序遍历、中序遍历和后序遍历非递归算法
二叉树遍历的算法,包括先序后序中序的递归算法
用户以先序遍历的方式键入二叉树各结点的数据域值(字符型),程序建立二叉树,然后分别用递归和非递归算法对二叉树进行遍历。每访问一个结点即打印该结点的数据域值。
本人的一个关于先序遍历二叉树的算法 主要用到栈
采用二叉链表存储先序建立二叉树,非递归中序遍历二叉树算法实现
数据结构课程中规定的按先序扩展序列建立二叉树,算法简单,容易看懂。
定义二叉树的结点结构 实现先序序列构造二叉树的算法 实现先序遍历这棵二叉树,输出每个结点的值的算法 利用先序遍历,统计叶子结点的个数 利用后序遍历,求二叉树的深度
算法6.4先序输出二叉树的结点算法6.4先序输出二叉树的结点算法6.4先序输出二叉树的结点
二叉树先序、中序、后序三种遍历的非递归算法
[问题描述] 建立二叉树,并输出二叉树的先序,中序和后序遍历序列,以及二叉树的叶子数。 [基本要求] 要求根据读取的元素建立二叉树,能输出各种遍历。 [实现提示] 可通过输入带空格的前序序列建立二叉链表。
2、先序遍历(递归算法)\n"); 3、中序遍历(递归算法)\n");4、后序遍历(递归算法)\n"); 5、中序遍历(非递归算法)\n"); 6、求二叉树的高度\n"); 7、求二叉树叶子个数\n");8、借助队列实现二叉树层次遍历
编写程序,用先序递归遍历法建立二叉树的二叉链表存储结构,然后输出其先序、中序、后序以及层次遍历结点访问次序。其中层次遍历的实现需使用循环队列。二叉树结点数据类型建议选用字符类型
从键盘接受输入(先序),以二叉链表作为存储结构,建立二叉树(以先序来建立), [测试数据] 如输入:ABCффDEфGффFффф(其中ф表示空格字符) 则输出结果为 先序:ABCDEGF 中序:CBEGDFA 后序:...