题目描述
给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。
假设二叉树中至少有一个节点。
代码
层序遍历
class Solution {
public:int findBottomLeftValue(TreeNode* root) {if (root == nullptr) return 0;queue<TreeNode*> que;que.push(root);vector<int> res;while (!que.empty()) {vector<int> vec;for (int i = que.size() - 1; i >= 0; i--) {TreeNode* tmp = que.front();que.pop();vec.push_back(tmp->val);if (tmp->left) que.push(tmp->left);if (tmp->right) que.push(tmp->right);}res = vec;}return res[0];}
};
递归+回溯
class Solution {
public:int maxDepth = INT_MIN;int result;void traversal(TreeNode* root, int depth) {if (root->left == nullptr && root->right == nullptr) {if (depth > maxDepth) {maxDepth = depth;result = root->val;}return;}if (root->left) {depth++;traversal(root->left, depth);depth--; //回溯}if (root->right) {depth++;traversal(root->right, depth);depth--;}return;}int findBottomLeftValue(TreeNode* root) {traversal(root, 0);return result;}
};