相对于上一个,这个二叉树是一个排序二叉树,根据你输入的结点的名称自动按大小排序。结点类Node放在了BinaryTree2类的里边,是为了更好的封装。这个代码相对于上一个更易读,更面向对象!值得一读!
class BinaryTree2
{
class Node
{
private String name;// String类是已经实现了Comparable<String>接口的,可以进行比较
private Node left;
private Node right;
public Node(String name)
{
this.name = name;
}
public void addNode(Node newNode)
{
if (newNode.name.compareTo(this.name) < 0)
{// 放在左子树
if (this.left == null)
{
this.left = newNode;
}
else
{
this.left.addNode(newNode);
}
}
else if (newNode.name.compareTo(this.name) > 0)
{// 放在右子树
if (this.right == null)
{
this.right = newNode;
}
else
{
this.right.addNode(newNode);
}
}
}
public void printNode()
{// 中序遍历
if (this.left != null)
{
this.left.printNode();
}
System.out.print(this.name + "-->");
if (this.right != null)
{
this.right.printNode();
}
}
}
private Node root;
public void add(String name)
{
Node newNode = new Node(name);
if (root == null)
{
root = newNode;
}
else
{
root.addNode(newNode);
}
}
public void print()
{
this.root.printNode();
}
}
class Test2
{
public static void main(String[] args)
{
BinaryTree2 bt = new BinaryTree2();
bt.add("A");
bt.add("D");
bt.add("B");
bt.add("F");
bt.add("E");
bt.add("C");
bt.add("F");
bt.add("G");
bt.print();
}
}
分享到:
相关推荐
java编写的二叉树的各种操作,其中包括二叉排序树和平衡二叉树的各项操作,用于学习数据结构,可以运行
单链表的基本操作,二叉树的遍历,折半查找和二叉排序树,内部排序等共四个实验的实现过程。
{//二叉树bt采用二叉链表存储,对bt进行先序遍历 SqStack S; BiTree p; if(bt) { InitStack(S); p=bt; Push(S,bt ); while(!StackEmpty(S)) { printf("%2c",p->data1); if(p->rchild) Push(S, p->rchild)...
数据结构中的单链表;二叉树遍历;折半查找;二叉排序树;内部排序。有具体实现代码。
数据结构报告 一元稀疏多项式运算器 唯一确定的二叉树 求最短路径 内部排序算法性能比较
里面有大学数据结构课程的实验程序,用MFC做的,很容易学习,期末了大家可以用它去交作业了
非常棒的数据结构程序演示 ,分为Pascal语言和C语言版,其中包含 顺序表 广义表 动态查找 静态查找 二叉树 链表 栈 串 稀疏矩阵 储存管理 内部排序 外部排序等等 只需解压即可
设计一个测试程序比较几种内部排序算法的关键字比较次数和移动次数以取得直观感受。 2.4运行环境 (1)WINDOWSXP系统 (2)C++ 编译环境 3.实验方法 本实验主要是内排序,通过比较的次数和移动的次数判断排序的好坏。...
最小生成树问题 运动会分数统计 内部排序算法比较 长整数四则运算
首先 声明 有几个可能没有做完(就一两个) 大家下了别骂人啊 数据结构—课程设计 包括 一元稀疏多项式计算器 迷宫问题 成绩分析问题 图的基本操作 实现以及背包问题 农夫过河问题的求解 13 停车厂模拟管理程序的...
常用排序算法,冒泡、希尔、堆排序、快速排序、归并排序、插入排序等
即一个有效的算法必须能在有限步骤内结束,并且对于给定的输入产生唯一的确定输出。 算法分类:排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra...
5.2 内部排序. . . . . . . 56 5.2.1 插入排序. . . . . . 61 5.2.2 交换排序. . . . . . 81 5.2.3 选择排序. . . . . . 107 5.2.4 合并排序. . . . . . 123 5.2.5 ...
即一个有效的算法必须能在有限步骤内结束,并且对于给定的输入产生唯一的确定输出。 算法分类:排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra...
2、设计一个学生类(CStudent),它具有私有数据成员是:学号、姓名、数学、外语和计算机课程的成绩。要求能实现求三门课总成绩和平均成绩,并能设置和显示学生信息 (类声明和成员函数定义分离)。设计一个友元函数,...
计算机专业所需,C语言编写,富含例题一、线性表 (一)线性表的定义和基本操作 (二)线性表的实现 1.顺序存储结构 2.... 3....二、栈、队列和数组 (一)栈和队列的基本概念 ...(十一)内部排序算法的应用
二、 内部排序 1. 算法设计与分析题:将直接插入排序的内循环改造为使用对分查找实现元素插入,请写出基于对分查找的插入排序算法并给出其时间复杂度分析。 2. 算法设计:将教案给出的非递归直接插入排序和冒泡排序...
这是一个数据结构演示系统,具体语言可以选择C(C++)和Pascal语言。可以动态演示各种算法,有两个基本作用: 1、理解算法 2、验证算法结果 ...P.S:每一个大类下还有很多子分类,我就不一一叙述了。
算法包含:最小生成树,一元多项式,复数四则运算,哈夫曼树,内部排序,二叉树的深度和叶子节点个数