public static void sinkZero(TreeNode p, Queue<TreeNode>q) {
		if (p==null) return;
		else if (p.val==0) q.offer(p);
		else if (!q.isEmpty()) {
			q.poll().val=p.val;p.val=0;q.offer(p);
		}
		sinkZero(p.left, q); sinkZero(p.right, q);
		if (q.peek()==p)q.poll();
	}