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;
}
};