20. 有效的括号
先判断字符串长度是否为偶数然后把左括号压入栈中再看右括号能不能适配,如果不能适配或者没有左括号则返回false,遍历结束后如果没有左括号了,返回true。
class Solution {
public:
bool isValid(string s) {
int n = s.size();
if (n % 2 == 1)
{
return false;
}
map<char, char> pairs =
{
{')', '('},
{']', '['},
{'}', '{'}
};
stack<char> stk;
for (char ch: s)
{
if (pairs.count(ch))
{
if (stk.empty() || stk.top() != pairs[ch])
{
return false;
}
stk.pop();
}
else
{
stk.push(ch);
}
}
return stk.empty();
}
};
589. N 叉树的前序遍历
首先将 节点的值加入答案,然后递归调用 来遍历 节点的左子树,最后递归调用 来遍历 节点的右子树即可,递归终止的条件为碰到空节点。
class Solution {
public:
void helper(const Node* root, vector<int> & res) {
if (root == nullptr) {
return;
}
res.emplace_back(root->val);
for (auto & ch : root->children) {
helper(ch, res);
}
}
vector<int> preorder(Node* root) {
vector<int> res;
helper(root, res);
return res;
}
};