private boolean travel(TreeNode root) {
    	Queue<TreeNode> mainQueue = new LinkedList<TreeNode>();
    	Queue<TreeNode> visited = new LinkedList<TreeNode>();
    	List<TreeNode> line = null;
    	TreeNode temp = null;
    	
    	mainQueue.offer(root);
    	
    	line = new ArrayList<TreeNode>();
    	while(!mainQueue.isEmpty()) {
    		
    		while(!mainQueue.isEmpty()) {
    			line.add(mainQueue.peek());
    			visited.offer(mainQueue.poll());
    		}
    		
    		if(checkLine(line, root) == false) {
    			return false;
    		}
    		line.clear();
    		
    		while(!visited.isEmpty()) {
    			temp = visited.poll();
    			
    			if(null != temp.left) mainQueue.offer(temp.left);
    			else if(temp.val != Integer.MIN_VALUE){
    				mainQueue.offer(new TreeNode(Integer.MIN_VALUE));
    			}
    			if(null != temp.right) mainQueue.offer(temp.right);
    			else if(temp.val != Integer.MIN_VALUE){
    				mainQueue.offer(new TreeNode(Integer.MIN_VALUE));
    			}
    		}
    	}
    	
    	return true;
    }