给定一个二叉树,返回它的 前序 遍历。

1.给定一个二叉树,返回它的 前序 遍历。

示例:
在这里插入图片描述
2.代码展示

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */


/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
 int treesize(struct TreeNode* root)
 {
     if (root == NULL)
     {
         return 0;
     }
    return    treesize(root->left)+treesize(root->right)+1;
    
 }
void _preorderTraversal(struct TreeNode* root,int* ret,int *returnSize)
{   
    if (root == NULL)
    {
        return ;
    }
    ret[(*returnSize)++]=root->val;
    _preorderTraversal(root->left,ret,returnSize);
    _preorderTraversal(root->right,ret,returnSize);
}

int* preorderTraversal(struct TreeNode* root, int* returnSize)
{   
    int size = treesize(root);
    int* ret = (int*)malloc(sizeof(int)*size);
    *returnSize = 0;
    _preorderTraversal(root,ret,returnSize);
    return ret;
}

2.解题思路
首先遍历树的所有节点,求出节点数size,然后再动态开辟一个大小为size的数组,用于存放节点的val,然后通过遍历左右子树,如果val存在时,就把它储存在开辟的数组里,这里需要注意的是,存储的位置传值的时候要传指针,,最后返回数组的头指针即可。

发布了79 篇原创文章 · 获赞 6 · 访问量 3789

猜你喜欢

转载自blog.csdn.net/qq_41152046/article/details/104923040