首页 > 代码库 > [LeetCode] Maximum Depth of Binary Tree

[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.

 

分析:就是传统意义上的二叉树高度

1 递归:

 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 
14     if (NULL == root) return 0;
15     int leftHeight = maxDepth(root->left);
16     int rightHeight = maxDepth(root->right);
17     int height ;
18     if(leftHeight > rightHeight)
19         height = leftHeight;
20     else
21         height = rightHeight;
22     return height + 1;
23  
24     }
25 };

 框架和求最小深度一样的非递归,由于最大长度要遍历到所有也节点,所以没有减枝

 1 struct newNode{
 2     TreeNode * node;
 3     int         dep;
 4 };
 5 
 6 class Solution {
 7     public:
 8         int maxDepth(TreeNode *root) {
 9             ;
10             if(NULL == root) return 0;
11 
12             int maxDep = INT_MIN;
13 
14             stack<newNode*> stack;
15 
16             newNode *p = new newNode;
17             p->node = root;
18             p->dep = 1;
19             stack.push(p);
20 
21             while( !stack.empty())
22             {
23                 p= stack.top();
24                 stack.pop();
25 
26                 TreeNode *pNode = p->node;
27                 int dep = p->dep;
28 
29 
30                 if(pNode->left == NULL && pNode->right == NULL)
31                 {
32                     maxDep = max(maxDep, dep);
33                 }
34 
35                 if(pNode->left != NULL)
36                 {
37                     newNode *tmp = new newNode;
38                     tmp->node = pNode->left;
39                     tmp->dep = dep + 1;
40                     stack.push(tmp);
41                 }
42 
43                 if(pNode->right != NULL)
44                 {
45                     newNode *tmp = new newNode;
46                     tmp->node = pNode->right;
47                     tmp->dep = dep + 1;
48                     stack.push(tmp);
49                 }
50 
51             }
52 
53             return maxDep;
54         }
55 
56 };