分层遍历二叉树的实现可以参考:http://blog.csdn.net/gg543012991/article/details/52833960
从下到上和这个很类似,记录每层的节点数,存入栈中,再分层出栈就是反向了。
/**
*
* @param root 树根节点
* 层序遍历二叉树,用队列实现,先将根节点入队列,只要队列不为空,然后出队列,并访问,接着讲访问节点的左右子树依次入队列
*/
public static void levelTravel(Node root){
if(root==null)return;
Queue<Node> q=new LinkedList<Node>();
q.add(root);
while(!q.isEmpty()){
Node temp = q.poll();
System.out.println(temp.value); //这个输出是从根往下输出,,可以将这个输出存入List中倒序输出即可
if(temp.left!=null)q.add(temp.left);
if(temp.right!=null)q.add(temp.right);
}
}
参考链接:http://blog.csdn.net/kerryfish/article/details/24309617
legendCoder正解