/*
* 文 件 名: Node.java
* 修改时间: 2012-11-27
*/
package tree;
/**
* 二叉树的节点
* @version [版本号, 2012-11-27]
*/
public class Node
{
int iData;
double dData;
Node leftChild;
Node rightChild;
/**
* <默认构造函数>
*/
public Node(int iData, double dData)
{
this.iData = iData;
this.dData = dData;
this.leftChild = null;
this.rightChild = null;
}
/**
* 显示节点数据
* @see [类、类#方法、类#成员]
*/
public void displayNode()
{
System.out.println("{" + iData + "," + dData + "}");
}
}
/*
* 文 件 名: BinaryTree.java
* 修改时间: 2012-11-26
*/
package tree;
/**
* 二叉树
* @version [版本号, 2012-11-26]
*/
public class BinaryTree
{
//二叉树的根节点的引用
private Node root;
/**
* <默认构造函数>
*/
public BinaryTree()
{
root = null;
}
/**
* 判断树是否为空
* @return
* @see [类、类#方法、类#成员]
*/
public boolean isEmpty()
{
return root == null;
}
/**
* 根据指定关键字查找节点
* @param iData
* @return
* @see [类、类#方法、类#成员]
*/
public Node find(int iData)
{
return find(iData, root);
}
/**
* 使用递归方式查找节点
* @param iData
* @param root
* @return
* @see [类、类#方法、类#成员]
*/
private Node find(int iData, Node root)
{
if (root == null)
{
return null;
}
else if (root.iData == iData)
{
return root;
}
else if (iData < root.iData)
{
return find(iData, root.leftChild);
}
else
{
return find(iData, root.rightChild);
}
}
/**
* 插入节点
* @param iData
* @param dData
* @see [类、类#方法、类#成员]
*/
public void insert(int iData, double dData)
{
Node node = new Node(iData, dData);
if (isEmpty())
{
root = node;
}
else
{
insert(node, root);
}
}
/**
* 使用递归方式插入节点
* @param node
* @param root 子树的根节点,不可为空
* @see [类、类#方法、类#成员]
*/
private void insert(Node node, Node root)
{
if (node.iData < root.iData)
{
if (root.leftChild == null)
{
root.leftChild = node;
return;
}
else
{
insert(node, root.leftChild);
}
}
else
{
if (root.rightChild == null)
{
root.rightChild = node;
return;
}
else
{
insert(node, root.rightChild);
}
}
}
/**
* 根据指定关键字删除节点
* @param iData
* @see [类、类#方法、类#成员]
*/
public void delete(int iData)
{
}
}