【树】 513. 找树左下角的值

题目:

解法:

解题思路
中序遍历,使用一个全局遍量记录最大深度,当到达的深度大于目前的最大深度时,为第一次到达该最大深度,更新结果,不超过该深度时,均不会更新。

复杂度
时间复杂度:每个结点访问一次,O(n)O(n)
空间复杂度:不计算调栈,O(1)O(1);计算调栈O(h)O(h),h为最大深度

 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 res = 0;
13     int maxlevel = 0;
14 
15     int findBottomLeftValue(TreeNode* root) 
16     {
17         helper(root, 1);
18         return res;
19     }
20 
21     void helper(TreeNode* root, int level)
22     {
23         if(root == NULL) 
24         {
25             return;
26         }
27 
28         helper(root->left, level + 1);
29 
30         if(level > maxlevel)
31         {
32             maxlevel = level;
33             res = root->val;
34         }
35 
36         helper(root->right, level + 1);
37     }
38 };

猜你喜欢

转载自www.cnblogs.com/ocpc/p/12821563.html