二叉树的前中后层序遍历

二叉树的前中后层序遍历_第1张图片

//后序遍历
vector r;
    vector postorderTraversal(TreeNode* root) 
    {
        dfs(root);
        return r;
    }
    void dfs(TreeNode* root)
    {
        if(root!=NULL)
        {
            dfs(root->left);
            int temp = root->val;
            dfs(root->right);
            r.push_back(temp);
        }
        return;
    }

 

//中序遍历 
vector r;
    vector inorderTraversal(TreeNode* root) {
        dfs(root);
        return r;
    }
    void dfs(TreeNode* root)
    {
        if(root!=NULL)
        {
            dfs(root->left);
            r.push_back(root->val);
            dfs(root->right);
        }
        return;
    }
//前序遍历
vector r;
    vector preorderTraversal(TreeNode* root) {
        dfs(root);
        return r;
    }
    void dfs(TreeNode* root)
    {
        if(root!=NULL)
        {
            r.push_back(root->val);
            dfs(root->left);
            dfs(root->right);
        }
        return;
    }
//层序遍历
 vector> levelOrder(TreeNode* root) {
        if(root == NULL)
            return {};
        vector> r;
        queue q;
        q.push(root);
        while(!q.empty())
        {   
            vector tmp;
            int length = q.size();
            for(int i = 0;i < length;i++)
            {
                TreeNode* temp = q.front();
                q.pop();
                if(temp->left!=NULL)
                    q.push(temp->left);
                if(temp->right!=NULL)
                    q.push(temp->right);
                tmp.push_back(temp->val);
            }
            r.push_back(tmp);
        }
        return r;
    }

 

 

你可能感兴趣的:(Leetcode,树)