day18 - 二叉树 part05
513. 找树左下角的值
详解
/** * 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 max_depth = INT_MIN; void search(TreeNode* node, int depth, int& result){ //前序遍历 中左右 //父节点控制结束 if(node->left == NULL && node->right == NULL){ if(depth > max_depth){ max_depth = depth; result = node->val; } return; } if(node->left){ depth++; search(node->left, depth, result); depth--;//深度回溯 } if(node->right){ depth++; search(node->right, depth, result); depth--;//深度回溯 } return; } int findBottomLeftValue_recursion(TreeNode* root) { int result; search(root, 0, result); return result; } int findBottomLeftValue(TreeNode* root) { int result; queue<TreeNode*> queue_1; if(!root) return 0; queue_1.push(root); while(!queue_1.empty()){ int size = queue_1.size();//cout<<size<<endl; for(int i=0; i< size; i++){ TreeNode* tmp = queue_1.front(); if(i == 0) result = tmp->val; queue_1.pop(); if(tmp->left) queue_1.push(tmp->left); if(tmp->right) queue_1.push(tmp->right); } } return result; } };