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.
代碼如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<code>/**</code>
<code> </code><code>* Definition for a binary tree node.</code>
<code> </code><code>* struct TreeNode {</code>
<code> </code><code>* int val;</code>
<code> </code><code>* TreeNode *left;</code>
<code> </code><code>* TreeNode *right;</code>
<code> </code><code>* TreeNode(int x) : val(x), left(NULL), right(NULL) {}</code>
<code> </code><code>* };</code>
<code> </code><code>*/</code>
<code>class</code> <code>Solution {</code>
<code>public</code><code>:</code>
<code> </code><code>int</code> <code>maxDepth(TreeNode* root) {</code>
<code> </code><code>int</code> <code>iMaxDepth = 0;</code>
<code> </code><code>vector<</code><code>int</code><code>> depths;</code>
<code> </code><code>stack<TreeNode *> s;</code>
<code> </code>
<code> </code><code>TreeNode *p,*q;</code>
<code> </code><code>q = NULL;</code>
<code> </code><code>p = root;</code>
<code> </code><code>if</code><code>(!root)</code>
<code> </code><code>return</code> <code>0;</code>
<code> </code><code>while</code><code>(p != NULL || s.size() > 0)</code>
<code> </code><code>{</code>
<code> </code><code>while</code><code>( p != NULL)</code>
<code> </code><code>{</code>
<code> </code><code>s.push(p);</code>
<code> </code><code>p = p->left;</code>
<code> </code><code>}</code>
<code> </code><code>if</code><code>(s.size() > 0)</code>
<code> </code><code>p = s.top();</code>
<code> </code>
<code> </code><code>if</code><code>( NULL == p->left && NULL == p->right)</code>
<code> </code><code>{</code>
<code> </code><code>if</code><code>(iMaxDepth < s.size())</code>
<code> </code><code>iMaxDepth = s.size();</code>
<code> </code><code>}</code>
<code> </code><code>if</code><code>( (NULL == p->right || p->right == q) )</code>
<code> </code><code>q = p;</code>
<code> </code><code>s.pop();</code>
<code> </code><code>p = NULL;</code>
<code> </code><code>else</code>
<code> </code><code>p = p->right;</code>
<code> </code><code>}</code>
<code> </code><code>return</code> <code>iMaxDepth;</code>
<code> </code><code>}</code>
<code>};</code>
本文轉自313119992 51CTO部落格,原文連結:http://blog.51cto.com/qiaopeng688/1835318