[面试真题] LeetCode: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.

广度优先遍历,使用NULL标记每层的结尾。

Program Runtime: 40 milli secs

 1 /**
 2  * Definition for binary tree
 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         // Start typing your C/C++ solution below
14         // DO NOT write int main() function
15         int rtn = 0;
16         queue<TreeNode*> q;
17         if(NULL != root){
18             q.push(root);
19             q.push(NULL);
20         }
21         while(q.size()){
22             TreeNode *cur = q.front();
23             q.pop();
24             if(NULL == cur){
25                 rtn++;
26                 if(q.size()){
27                     q.push(NULL);
28                 }
29             }else{
30                 if(cur->left) q.push(cur->left);
31                 if(cur->right) q.push(cur->right);
32             }
33         }
34         return rtn;
35     }
36 };

 

posted @ 2013-05-11 17:18  infinityu  阅读(618)  评论(0编辑  收藏  举报