LeetCode-513. 找树左下角的值
难度:中等
给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。
假设二叉树中至少有一个节点。
class Solution {
public:
/*
1.递归方法
//最底层-->最大深度-->用一个整形记录深度
//最左边-->前序遍历-->-->用一个整形记录结果
int max_depth=-1;
int res;
//要递归整棵树才能确定最终结果,所以递归函数无返回值
void fun(TreeNode *root, int depth){
//退出条件
if(!root)return;
if(!root->left && !root->right){
if(depth>max_depth){
max_depth = depth;
res = root->val;
}
}
fun(root->left , depth+1);
fun(root->right , depth+1);
}
int findBottomLeftValue(TreeNode* root) {
fun(root,0);
return res;
}
*/
/*
2.层序遍历
*/
int findBottomLeftValue(TreeNode* root) {
queue<TreeNode*> q;
TreeNode* cur;
q.push(root);
int size;
int res;
while(!q.empty()){
size = q.size();
if(size)
res = q.front()->val;
while(size--){
cur = q.front();
q.pop();
if(cur->left)q.push(cur->left);
if(cur->right)q.push(cur->right);
}
}
return res;
}
};
执行结果:
通过
执行用时:
12 ms, 在所有 C++ 提交中击败了64.80%的用户
内存消耗:
21.2 MB, 在所有 C++ 提交中击败了49.30%的用户
通过测试用例:
76 / 76