public static TreeNode deserializeLevel2(String str) {
		if( str == null || str.length() == 0 || (str.length() == 1 && str.charAt(0) == '#')) {
			return null;
		}
		int i = 0;
		Queue<TreeNode> q = new LinkedList<TreeNode>();
		TreeNode root = new  TreeNode((int)(str.charAt(0)- '0'));
		i++;
		q.add(root);
		while (!q.isEmpty()) {
			TreeNode cur = q.remove();
			if (str.charAt(i) != '#') {
				TreeNode node = new TreeNode((int)(str.charAt(i)) - '0');
				cur.left = node;
				q.add(node);
				i++;
			}else {
				//str.charAT(i) == "#' 
				i++;
			}
			if (str.charAt(i) != '#') {
				TreeNode node = new TreeNode((int)(str.charAt(i)) - '0');
				cur.right = node;
				q.add(node);
				i++;
			}else {
				//str.charAT(i) == "#' 
				i++;
			}
		}
		return root;
	}