package com.mypack.ds;
import java.util.Random;
public class TreeSet<T>
{
/**
* @param args
*/
public static void main(String[] args)
{
// TODO Auto-generated method stub
TreeSet<Integer> tree = new TreeSet<Integer>();
for (int i = 0; i < 20; i ++)
{
tree.add(new Random().nextInt(100));
}
System.out.println(tree);
}
private Entry<T> root;
private volatile Entry<T> entry;
public TreeSet()
{
}
public void add(T node)
{
if (root == null)
{
entry = root;
final Entry<T> tmp = entry;
synchronized (TreeSet.class)
{
if (tmp == null)
{
root = new Entry<T>(node);
}
}
}
else
{
insertNode(root, node);
}
}
public String toString()
{
StringBuilder sb = new StringBuilder();
travel(root, sb);
return sb.toString();
}
void travel(Entry<T> root, StringBuilder sb)
{
if (root.left == null)
{
sb.append(root.value).append(",");
}
else
{
travel(root.left, sb);
}
sb.append(root.value).append(",");
if (root.right == null)
{
sb.append(root.value).append(",");
}
else
{
travel(root.right, sb);
}
}
synchronized void insertNode(Entry<T> obj, T node)
{
Comparable<T> c = (Comparable<T>)node;
// right
if (c.compareTo(obj.value) > 0)
{
if (obj.right != null)
{
insertNode(obj.right, node);
}
else
{
Entry<T> en = new Entry<T>(node);
obj.right = en;
}
}
// left
else
{
if (obj.left == null)
{
Entry<T> en = new Entry<T>(node);
obj.left = en;
}
else
{
insertNode(obj.left, node);
}
}
}
static class Entry<T>
{
Entry left;
T value;
Entry right;
Entry(T value)
{
this.value = value;
}
}
}
TreeSet<T> 简单实现
最新推荐文章于 2024-04-11 15:38:23 发布