Programador entrevista preguntas clásicas doradas de la entrevista 04.09. Secuencia de árbol de búsqueda binaria

1. Introducción al tema

Recorra una matriz de izquierda a derecha y genere gradualmente un árbol de búsqueda binaria insertando continuamente elementos en el árbol. Dado un árbol de búsqueda binario compuesto por diferentes nodos, genere todas las matrices posibles de este árbol.

 

Ejemplo:
dado el siguiente árbol binario

        2
       / \
      1 3
volver:

[
   [2,1,3],
   [2,3,1]
]

Fuente: LeetCode
Enlace: https://leetcode-cn.com/problems/bst-sequences-lcci Los
derechos de autor son propiedad de LeetCode . Para reimpresiones comerciales, comuníquese con la autorización oficial. Para reimpresiones no comerciales, indique la fuente.

Dos ideas para resolver problemas

       Esta pregunta equivale a investigar la disposición completa disfrazada, y el método utilizado es "retroceso + recursión + cola de dos extremos". Este método no lo he descubierto yo mismo, y puedo aprender de otros y registrarlo aquí.

Tres, código de resolución de problemas

class Solution {
public:
    vector<vector<int>> BSTSequences(TreeNode* root) {
        vector<vector<int>> res;
        if(!root)
            return {
   
   {}};
        vector<int> ans;
        deque<TreeNode*> q;
        q.push_back(root);
        dfs(ans, res, q);
        return res;
    }

    void dfs(vector<int>& ans, vector<vector<int>> &res, deque<TreeNode*>& q)
    {
        if(q.empty())
        {
            res.push_back(ans);
            return;
        }
        for(int i = q.size(); i > 0; --i)
        {
            TreeNode* cur = q.front();
            q.pop_front();
            ans.push_back(cur->val);
            int count = 0;
            if(cur->left)
            {
                q.push_back(cur->left);
                ++count;
            }
            if(cur->right)
            {
                q.push_back(cur->right);
                ++count;
            }
            dfs(ans, res, q);
            for(int j = 0; j < count; ++j)
                q.pop_back();
            
            ans.pop_back();
            q.push_back(cur);
        }
    }
};

Cuatro, resultados de resolución de problemas

Supongo que te gusta

Origin blog.csdn.net/qq_39661206/article/details/108143175
Recomendado
Clasificación