import java.util.Queue;
import java.util.concurrent.LinkedBlockingQueue;
class TreeNode{
int item;
TreeNode left;
TreeNode right;
}
public class test1 {
public static void walkDeep(TreeNode treeNode){
System.out.println(treeNode.item);
if(treeNode.left != null){
walkDeep(treeNode.left);
}
if(treeNode.right != null){
walkDeep(treeNode.right);
}
}
public static void walkWide(TreeNode treeNode){
Queue<TreeNode> queue = new LinkedBlockingQueue<TreeNode>();
queue.add(treeNode);
while (!queue.isEmpty()){
TreeNode temp = queue.poll();
System.out.println(temp.item);
if(temp.left != null) queue.add(temp.left);
if(temp.right != null) queue.add(temp.right);
}
}
public static void main(String args[]){
TreeNode root = new TreeNode();
root.item = 0;
TreeNode c1 = new TreeNode();
c1.item = 1;
TreeNode c2 = new TreeNode();
c2.item = 2;
TreeNode c3 = new TreeNode();
c3.item = 3;
TreeNode c4 = new TreeNode();
c4.item = 4;
c1.left = c3;
c1.right = c4;
root.left = c1;
root.right = c2;
walkDeep(root);
System.out.println("----");
walkWide(root);
}
}