1.前序
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
/**
* Return an array of size *returnSize.
* Note: The returned array must be malloced, assume caller calls free().
*/
void preTraversal(struct TreeNode *root,int *res,int *count)
{
if(!root)
return;
else{
res[(*count)++] = root ->val;
if(root->left)
preTraversal(root->left,res,count);
if(root->right)
preTraversal(root->right,res,count);
}
}
int *preorderTraversal (struct TreeNode *root,int *returnSize){
if(!root)
return NULL;
int *res=(int*)malloc(1000*sizeof(int));
*returnSize=0;
preTraversal(root,res,returnSize);
return res;
}
2.中序
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
/**
* Return an array of size *returnSize.
* Note: The returned array must be malloced, assume caller calls free().
*/
void inorderTraval(struct TreeNode *root, int *buf, int *size)
{
if(!root){
return ;
}else{
if(root->left){
inorderTraval(root->left,buf, size);
}
buf[(*size)++] = root->val;
if(root->right){
inorderTraval(root->right, buf, size);
}
}
}
int* inorderTraversal(struct TreeNode* root, int* returnSize) {
int *point = (int *)malloc(sizeof(int)*100);
*returnSize = 0;
if(!root){
return ;
}
inorderTraval(root, point, returnSize);
// free(point);
return point;
}
3.后序
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
/**
* Return an array of size *returnSize.
* Note: The returned array must be malloced, assume caller calls free().
*/
void inorderTraval(struct TreeNode *root, int *buf, int *size)
{
if(!root){
return ;
}else{
if(root->left){
inorderTraval(root->left,buf, size);
}
if(root->right){
inorderTraval(root->right, buf, size);
}
buf[(*size)++] = root->val;
}
}
int* inorderTraversal(struct TreeNode* root, int* returnSize) {
int *point = (int *)malloc(sizeof(int)*100);
*returnSize = 0;
if(!root){
return ;
}
inorderTraval(root, point, returnSize);
// free(point);
return point;
}