Leetcode 94. Binary Tree Inorder Traversal

1279 단어

제목


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].
Note: Recursive solution is trivial, could you do it iteratively?

분석


중간 순서로 두 갈래 트리를 훑어보면 간단한 귀환으로 왼쪽 노드를 출력한 다음에 오른쪽 노드를 출력합니다.제목은 교체를 사용할 수 있다고 하는데, 일반적으로 교체가 충분하면 교체로 바뀔 수 있다.일부 열의 왼쪽 노드를 기록하는 창고가 필요합니다.
/**
 * 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 inTraversal(struct TreeNode * node,int *returnSize,int *ans)
{
    if(node!=NULL&&node->left!=NULL)
    {
        inTraversal(node->left,returnSize,ans);
    }
    if(node!=NULL)
    {
        ans[*returnSize]=node->val;
        *returnSize=*returnSize+1;
    }
    if(node!=NULL&&node->right!=NULL)
    {
        inTraversal(node->right,returnSize,ans);
    }
}
int* inorderTraversal(struct TreeNode* root, int* returnSize) {
    int *ans=(int *)malloc(sizeof(int)*10000);
    *returnSize=0;
    inTraversal(root,returnSize,ans);
    return ans;
}

좋은 웹페이지 즐겨찾기