1-10
1、反转链表
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
class Solution {
public:
ListNode* reverseList(ListNode* head) {
ListNode* cur = head;
ListNode* pre = nullptr;
while(cur){
ListNode* tmp = cur->next;
cur->next = pre;
pre = cur;
cur = tmp;
}
return pre;
}
};
2、二叉树的右视图
给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
class Solution{
public:
vector<int> rightSideView(TreeNode* root) {
vector<int> res;
if(root == nullptr) return res;
queue<TreeNode*> queue;
queue.push(root);
while(!queue.empty()){
int n = queue.size();
for(int i = 0; i < n; i++){
TreeNode* node = queue.front();
queue.pop();
if(node->left) queue.push(node->left);
if(node->right) queue.push(node->right);
if(i == n - 1) res.push_back(node->val);
}
}
return res;
}
};
3、二叉树的层序遍历
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。
class Solution{
public:
vector<vector<int>> levelOrder(TreeNode* root) {
vector<vector<int>> res;
vector<int> tmp;
if(root == nullptr) return res;
queue<TreeNode*> queue;
queue.push(root);
while(!queue.empty()){
int n = queue.size(