题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
分析
此题直接反应就是用队列,每一层依次入队列,没什么好说的,注意下空数组的返回就行了。
vector<int> PrintFromTopToBottom(TreeNode* root) {
queue<TreeNode *> Q;
vector<int> out;
if (root == NULL) {
return out;
}
TreeNode* p = root;
Q.push(p);
out.push_back(p->val);
while (!Q.empty()) {
p = Q.front();
Q.pop();
if (p->left) {
Q.push(p->left);
out.push_back(p->left->val);
}
if (p->right) {
Q.push(p->right);
out.push_back(p->right->val);
}
}
return out;
}
题目描述
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).
较简单,直接贴代码:
int FirstNotRepeatingChar(string str) {
map<char, int> isFirst;
for (int i = 0; i < str.size(); ++i) {
isFirst[str[i]]++;
}
for (int i = 0; i < str.size(); ++i) {
if (isFirst[str[i]] == 1) {
return i;
}
}
return -1;
}