【死磕算法系列】二叉树的深度

版权声明:本文为博主原创文章,未经博主允许禁止转载(http://blog.csdn.net/napoay) https://blog.csdn.net/napoay/article/details/78884653

一、递归实现

public void treeDepth(TreeNode node){
   if(node == null){
     return 0;
   }
   int leftDepth=treeDepth(node.left);
   int rightDepth=treeDepth(node.right);
   return leftDepth>rightDepth?(leftDepth+1):(rightDepth+1);
}

二、非递归实现

public void treeDepthByQuene(TreeNode node){
   if(node == null){
      return 0;
   }
   Queue<TreeNode> queue=new LinkedList<TreeNode>();
   queue.add(node);
   int cur,last;
   int depth=0;
   TreeNode current=null;
   while(!queue.isEmpty()){
      cur=0;
      last=queue.size();
      while(cur<last){
         current=queue.poll();
         cur++;
         if(current.left!=null){
            queue.add(current.left);
         }
         if(current.right!=null){
            queue.add(current.right);
         }
      } 
      depth++;
   }
   return depth;
}
阅读更多

扫码向博主提问

mydpp

博客专家

熟悉Lucene、ES、ELK
去开通我的Chat快问
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页