class Node {
int val;
Node left;
Node right;
constructor
}
BFS
Iterative
int val = 3;
LinkedList<Node> queue = new LinkedList<Node>();
queue.add(root);
while(queue.isNotEmpty()) {
Node x = queue.pop();
if (x == val) {
return x;
}
queue.add(x.left);
queue.add(x.right);
}
DFS
Iterative
int val = 3;
Stack<Node> stack = new Stack<Node>();
queue.push(root);
while(queue.isNotEmpty()) {
Node x = queue.pop();
if (x == val) {
return x;
}
queue.push(x.left);
queue.push(x.right);
}
Recursive
int val = 3;
Stack<Node> stack = new Stack<Node>();
queue.push(root);
while(queue.isNotEmpty()) {
Node x = queue.pop();
if (x == val) {
return x;
}
queue.push(x.left);
queue.push(x.right);
}
private Node search(Node node) {
if (node.x == val) {
return x;
}
}