今天算是正式刷算法题的第一天啦 今天的我很垃很垃 什么都不会 所以想好好记录一下 希望以后的自己有所成长
二叉树遍历
前序遍历
class Solution{
public:
void Left(TreeNode* root,vector<int>&ret)
{
if(root!=nullptr)
{
ret.push_back(root->val);
Left(root->left,ret);
Left(root->right,ret);
}
}
vector<int> preorderTraversal(TreeNode* root){
vector<int>ret;
Left(root,ret);
return ret;
}
};
中序遍历
class Solution{
public:
void Center(TreeNode* root,vector<int>&ret)
{
if(root!=nullptr)
{
Center(root->left,ret);
ret.push_back(root->val);
Center(root->right,ret);
}
}
vector<int> inorderTraversal(TreeNode* root){
vector<int>ret;
Center(root,ret);
return ret;
}
};
后序遍历
class Solution{
public:
void Right(TreeNode* root,vector<int>&ret)
{
if(root!=nullptr)
{
Right(root->left,ret);
Right(root->right,ret);
ret.push_back(root->val);
}
}
vector<int> postorderTraversal(TreeNode* root){
vector<int>ret;
Right(root,ret);
return ret;
}
};
层序遍历
Class Solution{
public:
vector<vector<int>> levelOrder(TreeNode* root){
vector<vector<int>>ans;
queue<TreeNode*>que;
if(root==nullptr) return ans;
que.push(root);
while(!que.empty())
{
int quelen= que.size();
ans.push_back(vetor<int>());
for(int i =0;i< quelen; i++)
{
auto node = que.front();
que.pop();
ans.back().push_back(node->val);
if(node->left) que.push(node->left);
if(node->right) que.push(node->right);
}
}
return ans;
}
}