题目

513 找树左下角的值
给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。
image.png

思路

本地要找出树的最后一行找到最左边的值。此时大家应该想起用层序遍历是非常简单的了,只需要记录最后一行第一个节点的数值就可以了。反而用递归的话会比较难一点(需要递归+回溯寻找最后一层)

  1. class Solution
  2. {
  3. public:
  4. int findBottomLeftValue(TreeNode *root)
  5. {
  6. std::queue<TreeNode *> que;
  7. if (root != NULL)
  8. que.push(root);
  9. TreeNode *tmp = nullptr;
  10. while (!que.empty())
  11. {
  12. int size = que.size();
  13. // 这里一定要使用固定大小size,不要使用que.size(),因为que.size是不断变化的
  14. for (int i = 0; i < size; i++)
  15. {
  16. TreeNode *node = que.front();
  17. que.pop();
  18. if (i == 0)
  19. tmp = node;//指保存一下每层遍历时第一个节点
  20. if (node->left)
  21. que.push(node->left);
  22. if (node->right)
  23. que.push(node->right);
  24. }
  25. }
  26. return tmp->val;//遍历结束,tmp保存的最后一层第一个节点
  27. }
  28. };