private List<NodeValue> traverse(Node node) { if (node == null) return null; List<NodeValue> list = new LinkedList<NodeValue>(); List<NodeValue> result; list.add(node.getKey()); result = traverse(node.getLeftChild()); if (result != null) { list.addAll(result); result.clear(); } result = traverse(node.getRightChild()); if (result != null) list.addAll(result); return list; }