BinaryTree类:
package com.javaeye.rsrt;
/**
*
* @author nishiting
*
*/
public class BinaryTree {
private Node root;
/**
* 内部类实现结点类,可提高安全性
* @author nishiting
*
*/
private static class Node {
Node left;
Node right;
int data;
Node(int newData) {
left = null;
right = null;
data = newData;
}
}
/**
* 创建一个空的二叉树
*/
public BinaryTree() {
root = null;
}
/**
* 递归的插入数值
* @param data 要插入的数值
*/
public void insert(int data) {
root = insert(root, data);
}
/**
* 将数值插入到二叉树中,比当前结点小或等于当前结点的插在当前结点的左侧,比当前结点大的数插在当前结点的右侧,每次从根结点开始递归比较
* @param node 当前的结点,就是根结点,只是每次根结点的左右子孙更新
* @param data 要插入的数值
* @return 新排好的二叉树
*/
private Node insert(Node node, int data) {
if (node == null) {
node = new Node(data);
} else {
if (data <= node.data) {
node.left = insert(node.left, data);
} else {
node.right = insert(node.right, data);
}
}
return (node);
}
/**
* 将数值输入构建二叉树
* @param data 要输入的数值
*/
public void buildTree(int[] data) {
for (int i = 0; i < data.length; i++) {
insert(data[i]);
}
}
/**
* 递归打印出二叉树
*/
public void printTree() {
printTree(root);
System.out.println();
}
/**
* 从根结点开始遍历,从树的最高层叶子结点开始输出,从左至右
* @param node 当前的结点
*/
private void printTree(Node node) {
if (node == null)
return;
// left, node itself, right
printTree(node.left);
System.out.print(node.data + " ");
printTree(node.right);
}
}
测试类:
package com.javaeye.rsrt;
import junit.framework.TestCase;
public class BinaryTreeTest extends TestCase {
public void testBinaryTreeTest() {
BinaryTree biTree = new BinaryTree();
int[] data = { 2, 8, 7, 4 ,9,3,1,6,7,5};
biTree.buildTree(data);
biTree.printTree();
}
}
分享到:
相关推荐
java二叉树实现 (简单实现,入门用) /**创建二叉树*/ public BinaryTree createTree(String treeStr); /**寻找结点*/ public BinaryTree findNode(BinaryTree tree ,char sign); /**找所给结点的左子树*/ ...
二叉树的java实现
资源是txt版本,整合了思路及程序。内容仅供参考,不可用于商业,否则后果自负。
java实现二叉树非递归前序中序后序遍历
简单的描述了JAVA实现二叉树
一个简单的课程设计,使用Java来实现二叉树的中序遍历
用java写的二叉树,一种特别的二叉树,右子树大于左子树,具体的名称不记得了。
java实现二叉树遍历demo,一个简单是实例
二叉树可视化Java语言实现,包含四个字文件、BinaryNode、Show1_12、Display_Tree、TreeControl。直接可以运行,方便快捷。
Java的二叉树实现。 解压后恢复到Eclipse工作区中即可。
java实现 二叉树的遍历 前序遍历用到递归, 中序和后序遍历用到栈, 其实还是有一定难度的
java实现的二叉树源码,包括建立、前序、中序、后序遍历算法,查找算法
java用队列实现的二叉树程序//入队 public void enqueue(E e); //出队 public E dequeue(); //取队列第一个 public E front(); //队列是否为空 public boolean isEmpty(); //队列大小 public int size...
Java实现二叉树的基本操作
java使用jtree动态实现二叉树,包含二叉树的插入删除很查找
java语言实现的中国电信超级号码簿跳转功能 数据结构为二叉树 运用孩子兄弟链表法把一棵树变成了二叉树 实现了跳转功能
java实现二叉树数据结构,简单明了,免费下载
代码实现: 二叉树的查找、插入、删除和输出根节点到当前节点的路径 二叉树的前序遍历,中序遍历和后续遍历 TreeNode.java --定义树节点 Mytree.java----创建树结构和上述功能函数 TestTree.java --测试上述的功能
Java实现二叉树的3种方式,顺序二叉树的实现,二叉树的三叉链表存储,二叉树的二叉链表实现
Java实现二叉树中序线索化 左键画节点 右键画跟 点可以拖动 两个节点可以连线 确认进行线索化 并画出线索