144-二叉树的前序遍历

leetcode题解——二叉树的前序遍历

题目如下

给你二叉树的根节点 root ,返回它节点值的 前序 遍历。

解题思路

递归函数结构

  1. 确定递归函数的参数和返回类型
  2. 确定终止条件
  3. 确定单层递归的逻辑

本题解法

  1. returnSize是动态变化的,表示数组长度,由于传进函数的是指向returnSize的指针,故赋值时要用*表示returnSize的值。
  2. 若当前结点为空,则该层遍历结束
  3. 否则,处理当前结点,遍历该节点的左右孩子

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().
 */
void preorder(struct TreeNode* root, int* result, int* resSize){
    if(root==NULL){return;}
    result[(*resSize)++]=root->val;
    preorder(root->left, result, resSize);
    preorder(root->right, result, resSize);
}

int* preorderTraversal(struct TreeNode* root, int* returnSize){
    int *result = malloc(sizeof(int)*1000);
    *returnSize=0;
    preorder(root, result, returnSize);
    return result;
}
posted @ 2021-03-14 16:17  平平无奇的打工人  阅读(48)  评论(0)    收藏  举报