144.二叉树的前序遍历
145.二叉树的后序遍历
94. 二叉树的中序遍历
关于二叉树的前中后序遍历,一般都是用递归
前序:中左右
中序:左中右
后序:左右中
中在前就是前序,中在中间就是中序,中在后就是后续
如何表示结点被遍历?只需要将该结点的值放入数组中存储即可
前序遍历代码:
cpp
class Solution {
public:
void traversal(TreeNode* cur, vector<int>& vec) {
if(cur == NULL)
{
return ;
}
vec.push_back(cur ->val);
traversal(cur ->left, vec);
traversal(cur ->right, vec);
}
vector<int> preorderTraversal(TreeNode* root) {
vector<int> result;
traversal(root,result);
return result;
}
};
中序遍历代码:
cpp
class Solution {
public:
void rev(TreeNode* cur, vector<int>& vec)
{
if(cur == NULL) return;
rev(cur ->left, vec);
vec.push_back(cur ->val);
rev(cur ->right,vec);
}
vector<int> inorderTraversal(TreeNode* root) {
vector<int> result;
rev(root,result);
return result;
}
};
后续遍历代码:
cpp
class Solution {
public:
void rev(TreeNode* cur,vector<int>& vec)
{
if(cur == NULL) return;
rev(cur ->left, vec);
rev(cur ->right, vec);
vec.push_back(cur ->val);
}
vector<int> postorderTraversal(TreeNode* root) {
vector<int> result;
rev(root,result);
return result;
}
};