[Estructura de datos C ++] El método transversal frontal, medio y posterior del árbol, y el método transversal jerárquico del árbol

1. Recorrido de orden frontal, medio y posterior

1. El concepto de recorrido de orden frontal, medio y posterior.

El recorrido del orden frontal, medio y posterior en realidad se basa en el orden transversal de los nodos secundarios y principales.

Prefacio: centro izquierda y derecha

Orden medio: izquierda medio derecha

Secuencia: izquierda, derecha, centro.

Consejo: si el medio está en el frente, es un recorrido de preorden, si el medio está en el medio, está en orden, y si está en la parte posterior, es un postorden.

Aquí, el medio representa el nodo principal, la izquierda representa el nodo izquierdo (hijo izquierdo) y la derecha representa el nodo derecho (hijo derecho).

La siguiente es la secuencia correspondiente a los tres métodos transversales:

Ejemplo: 10->9->6->5->7->4->3

Ejemplo: 6->9->5->10->4->7->3

Nivel: 6->5->9->4->3->7->10

 2. Implementación del código

prólogo:

class Solution {
public:
    void traversal(TreeNode* cur, vector<int>& nums) {
        if (cur == NULL) return;
        nums.push_back(cur->val);    //将父节点放进去即(中)
        traversal(cur->left, nums);  //放(左)
        traversal(cur->right, nums);  //放(右)
    }
    vector<int> preorderTraversal(TreeNode* root) {
        vector<int> result;
        traversal(root, result);
        return result;
    }
};

Orden medio:

class Solution {
public:
    void traversal(TreeNode* cur, vector<int>& nums) {
        if (cur == NULL) return;
        traversal(cur->left, nums);  //放(左)
        nums.push_back(cur->val);    //将父节点放进去即(中)
        traversal(cur->right, nums);  //放(右)
    }
    vector<int> preorderTraversal(TreeNode* root) {
        vector<int> result;
        traversal(root, result);
        return result;
    }
};

Epílogo:

class Solution {
public:
    void traversal(TreeNode* cur, vector<int>& nums) {
        if (cur == NULL) return;
        traversal(cur->left, nums);  //放(左)
        traversal(cur->right, nums);  //放(右)
        nums.push_back(cur->val);    //将父节点放进去即(中)
    }
    vector<int> preorderTraversal(TreeNode* root) {
        vector<int> result;
        traversal(root, result);
        return result;
    }
};

¡Ya terminaste! No es fácil escribir. Si lo logras, síguenos o dale me gusta. Gracias ~~


Supongo que te gusta

Origin blog.csdn.net/Callme_TeacherPi/article/details/124546661
Recomendado
Clasificación