题解里的c++解法太少啦,这里就为想要c++解法的宝子们写了篇易食用的题解。
采用二叉树的层序遍历,并记录每层遍历的第一个节点(即最左侧节点)的值。
具体的解决方案如下:
- 创建一个队列,用于进行序遍历。
- 如果根节点不为空,将根节点入队。
- 进入循环,直到队列为空:获取当前层的节点数量 size。枚举当前层的节点,并将其左节点和右子节点(若存在)入队。将当前层的第一个节点(最左侧节点)的值记录下来。
- 返回记录下的节点值。
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * }; */ class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @return int整型vector */ vector<int> leftSideView(TreeNode* root) { vector<int> result; if (root == nullptr) { return result; } queue<TreeNode*> q; q.push(root); while (!q.empty()) { int size = q.size(); for (int i = 0; i < size;i++) { TreeNode* node = q.front(); q.pop(); if (i == 0) { //记录每层的第一个节点(最左侧节点) result.push_back(node->val); } if(node->left != nullptr) { q.push(node->left); } if (node->right != nullptr) { q.push(node->right); } } } return result; // write code here } };