给定一棵二叉树{1,#,2,3}
返回其前序遍历[1,2,3];
返回其中序遍历[1,3,2];
返回其后序遍历[3,2,1];
采用递归方法,
代码实现如下:
class Solution {
public:
//前序
vector<int> preorderTraversal(TreeNode *root) {
preorder(root);
return tree;
}
void preorder(TreeNode* cur)
{
if (cur == NULL)
return;
tree.push_back(cur->val);
preorder(cur->left);
preorder(cur->right);
}
//中序
vector<int> InorderTraversal(TreeNode *root) {
Inorder(root);
return tree;
}
void Inorder(TreeNode* cur)
{
if (cur == NULL)
return;
Inorder(cur->left);
tree.push_back(cur->val);
Inorder(cur->right);
}
//后序
vector<int> postorderTraversal(TreeNode *root) {
postorder(root);
return tree;
}
void postorder(TreeNode* cur)
{
if (cur == NULL)
return;
postorder(cur->left);
postorder(cur->right);
tree.push_back(cur->val);
}
private:
vector<int> tree;
};