Welcome everyone

猿辅导 面试

面试 汪明鑫 750浏览 0评论

 

微信 + 石墨文档 远程面试

 

算法题:

二叉树,求第k层有多少个节点

 

我的答案

class TreeNode{
   TreeNode left;
   TreeNode right;

   int floor ; //第几层? 

   int val;
}


class Main{
      //求第k层有多少个节点
     public int findNum(TreeNode root,int k){
        if(root == null){
          return -1;
     }

     if(k <= 0){
        return -1;
     }

     if(k == 1){
       return 1;
     }

    root.floor = 1;

    Queue queue = new Queue();
    queue.offer(root);

    int result =0 ;
while(queue.size() != null){
   TreeNode node =  queue.take();

   if(node.floor == k){
     result ++;
   }

   if(node.floor >k){
     breakl;
   }

   if(node.left != null){
     queue.offer(node.left);
     node.left .floor = node . floor + 1; 
   }

   if(node.right !=null ){
     queue.offer(node.right);
     node.right .floor = node . floor + 1; 
   }

}

    return result;

}

}

 

面试官说大体是这样,一些细节还得看下,而且二叉树在第几层一般都不会给

 

 

转载请注明:汪明鑫的个人博客 » 猿辅导 面试

喜欢 (0)

说点什么

您将是第一位评论人!

提醒
avatar
wpDiscuz