94. 二叉树的中序遍历(通过)
思路:二叉树的遍历
效率:100%
程序代码:
class Solution {
public:
vector<int> inorderTraversal(TreeNode* root) {
vector<int> result;
Haha(root, result);
return result;
}
void Haha(TreeNode* root, vector<int> &result) {
if (root == NULL) return;
Haha(root->left, result);
result.push_back(root->val);
Haha(root->right,result);
}
};
方法二:(效率比较低)
可是居然也是100%。。。。。
class Solution {
public:
vector<int> inorderTraversal(TreeNode* root) {
vector<int> result;
if (root == NULL) return result;
vector<int> a = inorderTraversal(root->left);
for (int i = 0; i < a.size(); i++)
result.push_back(a[i]);
result.push_back(root->val);
vector<int> b = inorderTraversal(root->right);
for (int j = 0; j < b.size(); j++)
result.push_back(b[j]);
return result;
}
};
102. 二叉树的层次遍历(通过)
思路:略
效率:99.93%
程序代码:
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
vector<vector<int>> result;
vector<int> tmp;//
if (!root) return result;
queue<TreeNode*> qu;//新建一个队列,存放的是指针
qu.push(root);
while (!qu.empty()) {
int n = qu.size();
for (int i = 0; i < n; i++) {
TreeNode* aim = qu.front();
tmp.push_back(aim->val);
qu.pop();
if(aim->left)
qu.push(aim->left);
if(aim->right)
qu.push(aim->right);
}
result.push_back(tmp);
tmp.clear();//再进行清空
}
return result;
}
};