Skip to content

Latest commit

 

History

History
63 lines (55 loc) · 1.12 KB

File metadata and controls

63 lines (55 loc) · 1.12 KB

##Tries Tree

###Search ###Insertion ###Deletion ###Comparison

###Implementation

public class Trie<Value> {
	private static final int R =256;
	private Node root = new Node();

	private static class Node {
		private Object value;
		private Node[] next = (Node []) new Object[R];
	}

	public void put(String Key, Value val) {
		root = put(root, key, val, 0);
	}

	private Node put(Node x, String key, Value val, int d) {
		if (x == null) {
			x = new Node();
		}
		if (d == key.length()) {
			x.val = val;
			return x;
		}
		char c = Key.charAt(d);
		x.next[c] = put(x.next[c], key, val, d + 1);
		return x;
	}

	public boolean contains(String Key) {
		return get(key) != null;
	}

	public Value get(String key) {
		Node x = get(root, key, 0);
		if (x == null) {
			return null;
		}
		return (Value) x.val;
	}

	private Node get(Node x, String key, int d) {
		if (x == null) {
			return null;
		}
		if (d == key.length()) {
			return x;
		}
		char c = key.charAt(d);
		return get(x.next[c], key, d+1);
	}
}