我正在阅读有关在二叉搜索树中搜索项目的内容。我找到了这段代码:
public class Node {
public int key;
public Object data;
public Node left;
public Node right;
}
public static Object search(Node root, int key) {
if (root == null)
return null;
else if (key == root.key)
return root.data;
else if (key < root.key)
return searchTree(root.left, key);
else
return searchTree(root.right, key);
}
我想重写search()方法,以便它使用迭代而不是 递归。我确实喜欢这个:
public static Object search(Node root, int key) {
if (root == null)
return null;
else if (key == root.key)
return root.data;
else if (key < root.key) {
Iterator iter = root.left.iterator();
while (iter.hasNext()) {
object item = iter.next();
if(iter.key.equals(key)) {
return item.data;
}
}
} else {
Iterator iter = root.right.iterator();
while (iter.hasNext()) {
object item = iter.next();
if(iter.key.equals(key)) {
return item.data;
}
}
}
}
我做对了吗?
由于
答案 0 :(得分:0)
坦率地说 - 我几乎失去了你的迭代器方法,因为非递归方法你可以使用堆栈。