Dado un árbol binario, devuelva su recorrido anterior.
Ejemplo:
Entrada: [1,null,2,3]
1
2
/
3
Salida: [1,2,3]
Fuente: LeetCode
enlace: https://leetcode-cn.com/problems/binary-tree-preorder-traversal
Los derechos de autor pertenecen a Lingkou Network. Para reimpresiones comerciales, póngase en contacto con la autorización oficial. Para reimpresiones no comerciales, indique la fuente.
El recorrido se resuelve fácilmente mediante recursividad, pero la función original requiere que vector<int> se devuelva cada vez, por lo que se vuelve muy sencillo volver a definir una función para volver a repetir y llevar el valor a la función original. A continuación se muestra el código
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
void _preorderTraversal(TreeNode* root,vector<int> *p)
{
if(root==NULL)
{
return ;
}
(*p).push_back(root->val);
_preorderTraversal( root->left,p);
_preorderTraversal(root->right,p);
}
vector<int> preorderTraversal(TreeNode* root) {
vector<int>a;
_preorderTraversal(root,&a);
return a;
}
};
.