求大神解答这两道编程题,分别写清如何实现的Java代码

图片说明
图片说明

分层遍历二叉树的实现可以参考: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正解