513. Find Bottom Left Tree Value 原題鏈接
關鍵詞: 廣度優先搜索(BFS)
簡單回憶一下BFS:BFS在遍歷圖時首先從源節點出發遍歷其子節點,並將其放入隊列中,繼續依次對這些子節點進行上述操作。
這道題屬於找對路子很方便,沒找對就很沙雕 = =。
一開始我打算老老實實從左遍歷的,但當我自己模擬一遍的時候我傻了,瑪哎我還要記錄每個值來自左右以及其高度伐?(當然這個來自左右是我一開始對這個題意的誤解,題目只說了要給出最左的數值即可,我一開始看成了最底層左葉子的值了,這個怪我)
So, 左邊不爽來右邊嘛,搞出來的代碼如下,這個對樹的層遍歷即一個簡單的BFS。
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int findBottomLeftValue(TreeNode* root) {
queue<TreeNode*> que;
que.push(root);
TreeNode* ptr = nullptr;
while(!que.empty()){
ptr = que.front();
if(ptr->right)
que.push(ptr->right);
if(ptr->left)
que.push(ptr->left);
que.pop();
}
return ptr->val;
}
};