二叉树的前中后序

二叉树的前序遍历

class Solution {
    
    
public:
    vector<int> preorderTraversal(TreeNode* root) {
    
    
        vector<int>res;
         Traversal(root,res);
         return res;
        
    }
    void Traversal(TreeNode*root,vector<int>&res)
    {
    
    
        if(!root) return ;
        res.push_back(root->val);
        Traversal(root->left,res);
        Traversal(root->right,res);
    }
};

二叉树的后序遍历

class Solution {
    
    
public:
    vector<int> postorderTraversal(TreeNode* root) {
    
    
        vector<int>res;
         Traversal(root,res);
         return res;
        
    }
    void Traversal(TreeNode*root,vector<int>&res)
    {
    
    
        if(!root) return ;
        Traversal(root->left,res);
        Traversal(root->right,res);
        res.push_back(root->val);
    }
};

二叉树的中序遍历

class Solution {
    
    
public:
    vector<int> inorderTraversal(TreeNode* root) {
    
    
        vector<int>res;
         Traversal(root,res);
         return res;
        
    }
    void Traversal(TreeNode*root,vector<int>&res)
    {
    
    
        if(!root) return ;
        Traversal(root->left,res);
        res.push_back(root->val);
        Traversal(root->right,res);
        
    }
};

然后上小结:
1.要确定递归函数的参数以及返回值
2.跳出递归的条件
3.递归要进行的操作
以上述的前序遍历为例子
1.

void traversal(TreeNode* cur, vector<int>& vec)
if(!root) return ;
 res.push_back(root->val);//中
 Traversal(root->left,res);//左
 Traversal(root->right,res);//右

要注意这是递归函数里面要准备的内容!!!不要要写到主函数里面去了
所以只要后面把递归函数操作更改一下就行了

猜你喜欢

转载自blog.csdn.net/qq_44808694/article/details/111415722