zoukankan      html  css  js  c++  java
  • 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.

    Analyse: The same as Minimum Depth of Binary Tree

    1. Recursion

        Runtime: 8ms.

     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) return 0;
    14         
    15         int leftDepth = maxDepth(root->left);
    16         int rightDepth = maxDepth(root->right);
    17         
    18         if(leftDepth == 0 && rightDepth == 0) return 1;
    19         if(leftDepth == 0) leftDepth = INT_MIN;
    20         if(rightDepth == 0) rightDepth = INT_MIN;
    21         
    22         return 1 + max(leftDepth, rightDepth);
    23     }
    24 };

    2. Iteration: Compute the number of level. Initialize the level to be 0, after dealing with the current level, then level++.

        Runtime: 8ms.

     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) return 0;
    14         
    15         queue<TreeNode* > qu;
    16         qu.push(root);
    17         int level = 0;
    18         while(!qu.empty()){
    19             int n = qu.size();
    20             while(n--){
    21                 TreeNode* current = qu.front();
    22                 qu.pop();
    23                 
    24                 if(current->left) qu.push(current->left);
    25                 if(current->right) qu.push(current->right);
    26             }
    27             level++;
    28         }
    29         return level;
    30     }
    31 };
  • 相关阅读:
    用icas下载文件报错
    jboss7.1.1相关error及解决办法
    Base-64编码介绍
    上传文件路径问题
    ZooKeeper安装(Windows)
    DBCP连接池配置参数说明
    Linux普通用户使用sudo权限启停apache服务
    线程池中的队列
    java线程池原理及实现方式
    https基础流程
  • 原文地址:https://www.cnblogs.com/amazingzoe/p/4692400.html
Copyright © 2011-2022 走看看