请看题
Example
思路
https://linux.do/t/topic/104480
此题和昨天写的题几乎是一样的,只需要改一处地方就可以了。不过在那之前先来解释一下思路。
题目要求我们去获取到最左且最底下的值,那么什么样的算法可以满足这个条件呢?刚好,我们会一个算法叫做层次遍历,其目的的获取每一层的节点,直到无节点可获取,根据这一道题,使用层次遍历刚好可以满足要求,因为最底下且最左的值是一定可以被层次遍历获取的,那么把昨天的代码拿来改一改,把返回的双重vector改为int并且在循环内赋值,最后返回即可。
Code
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
| /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */ class Solution { public: int findBottomLeftValue(TreeNode* root) { queue<TreeNode *> q; q.push(root); int val = root->val; while(!q.empty()) { int size = q.size(); val = q.front()->val; for(size_t i = 0; i < size; i++) { TreeNode *node = q.front(); q.pop(); if(node->left) { q.push(node->left); } if(node->right) { q.push(node->right); } } } return val; } };
|
结束。