前序遍历
void preorder(struct TreeNode* root,int* res,int* resSize){
if(root==NULL){
return;
}
res[(*resSize)++]=root->val;
preorder(root->left,res,resSize);
preorder(root->right,res,resSize);
}
int* preorderTraversal(struct TreeNode* root, int* returnSize) {
int* res=malloc(sizeof(int)*2000);
*returnSize=0;
preorder(root,res,returnSize);
return res;
}
struct TreeNode* root
:指向当前正在遍历的二叉树节点的指针。
int* res
:一个整型数组,用于存储遍历过程中的节点值。
int* resSize
:一个整型指针,用于记录已经存储在res
数组中的节点值的数量。
之后的中序和后序遍历只需调换一下代码顺序即可。
中序遍历
void inorder(struct TreeNode* root,int *res,int *resSize){
if(root==NULL){
return;
}
inorder(root->left,res,resSize);
res[(*resSize)++]=root->val;
inorder(root->right,res,resSize);
}
int* inorderTraversal(struct TreeNode* root, int* returnSize) {
int *res=malloc(sizeof(int)*2000);
*returnSize=0;
inorder(root,res,returnSize);
return res;
}
后序遍历
void postorder(struct TreeNode* root,int *res,int* resSize){
if(root==NULL){
return;
}
postorder(root->left,res,resSize);
postorder(root->right,res,resSize);
res[(*resSize)++]=root->val;
}
int* postorderTraversal(struct TreeNode* root, int* returnSize) {
int *res=malloc(sizeof(int)*2000);
*returnSize=0;
postorder(root,res,returnSize);
return res;
}