94. Binary Tree Inorder Traversal

Given a binary tree, return the inorder traversal of its nodes' values.

For example:
Given binary tree [1,null,2,3],

   1
    \
     2
    /
   3

return [1,3,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().
 */
int* inorderTraversal(struct TreeNode* root, int* returnSize) {
    int *result=NULL;
    if(!root)
        return result;
    int *leftarr=NULL,*rightarr=NULL,leftsize=0,rightsize=0;
    if(root->left)
        leftarr=inorderTraversal(root->left,&leftsize);
    if(root->right)
        rightarr=inorderTraversal(root->right,&rightsize);
    *returnSize=1+leftsize+rightsize;
    result = (int *)malloc(sizeof(int)*(*returnSize));
    for(int i=0;i<leftsize;i++)
        result[i]=leftarr[i];
    result[leftsize]=root->val;
    for(int j=0;j<rightsize;j++)
        result[j+leftsize+1]=rightarr[j];
    free(leftarr);free(rightarr);
    
    return result;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章