zoukankan      html  css  js  c++  java
  • 104. Maximum Depth of Binary Tree

    Given a binary tree, find its maximum depth.

    The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.

    Subscribe to see which companies asked this question

    计算二叉树的深度

    java(3ms):bfs

     1 /**
     2  * Definition for a binary tree node.
     3  * public class TreeNode {
     4  *     int val;
     5  *     TreeNode left;
     6  *     TreeNode right;
     7  *     TreeNode(int x) { val = x; }
     8  * }
     9  */
    10 public class Solution {
    11     public int maxDepth(TreeNode root) {
    12         if (root == null)
    13             return 0 ;
    14         int depth = 0 ;
    15         TreeNode node = null ;
    16         Queue<TreeNode> que = new LinkedList<TreeNode>() ;
    17         que.offer(root) ;
    18         while(!que.isEmpty()){
    19             int size = que.size() ;
    20             for (int i = 0 ; i < size ; i++){
    21                 node = que.poll() ;
    22                 if (node.left != null){
    23                     que.offer(node.left) ;
    24                 }
    25                 if (node.right != null){
    26                     que.offer(node.right) ;
    27                 }
    28                 
    29             }
    30             depth++ ;
    31         }
    32         return depth;
    33     }
    34 }

    C++(6ms):

     1 /**
     2  * Definition for a binary tree node.
     3  * struct TreeNode {
     4  *     int val;
     5  *     TreeNode *left;
     6  *     TreeNode *right;
     7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     8  * };
     9  */
    10 class Solution {
    11 public:
    12     int maxDepth(TreeNode* root) {
    13         if(root == NULL)
    14           return 0 ;
    15         queue<TreeNode*> q;
    16         q.push(root) ;
    17         int dep = 0 ;
    18         while(!q.empty()){
    19            int len = q.size();//很关键,队列pop后size会动态变化
    20            for(int i = 0 ; i < len;i++){
    21                TreeNode* t =  q.front();
    22                q.pop();
    23                if(t->left != NULL)
    24                   q.push(t->left) ;
    25                if(t->right != NULL)
    26                   q.push(t->right) ;
    27            }
    28            dep++ ;
    29         }
    30         return dep ;
    31     }
    32 };

    java(1ms):dfs

     1 /**
     2  * Definition for a binary tree node.
     3  * public class TreeNode {
     4  *     int val;
     5  *     TreeNode left;
     6  *     TreeNode right;
     7  *     TreeNode(int x) { val = x; }
     8  * }
     9  */
    10 public class Solution {
    11     public int maxDepth(TreeNode root) {
    12         if (root == null)
    13             return 0 ;
    14         
    15         return Math.max(maxDepth(root.left),maxDepth(root.right)) + 1 ;
    16     }
    17 }

     C++(6ms)dfs:

     1 /**
     2  * Definition for a binary tree node.
     3  * struct TreeNode {
     4  *     int val;
     5  *     TreeNode *left;
     6  *     TreeNode *right;
     7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     8  * };
     9  */
    10 class Solution {
    11 public:
    12     int maxDepth(TreeNode* root) {
    13         if (root == NULL)
    14           return 0 ;
    15         return max(maxDepth(root->left),maxDepth(root->right)) +1 ;
    16     }
    17 };
  • 相关阅读:
    [HNOI2015]实验比较 树形dp+组合数学
    【bzoj1090】 [SCOI2003]字符串折叠
    hdu4514(非连通图的环判断与图中最长链)(树的直径)
    数据类型进阶 续1
    数据类型进阶
    二进制补码
    基本数据类型的包装类
    变量的作用域
    用变量保存多种类型的数据
    用变量简化计算
  • 原文地址:https://www.cnblogs.com/mengchunchen/p/6014340.html
Copyright © 2011-2022 走看看