Leetcode144. 二叉树的前序遍历-C语言

文章目录

  • 题目介绍
  • 题目分析
  • 解题思路
    • 1.创建一个数组来储存二叉树节点的值
    • 2.根据二叉树的大小来开辟数组的大小
    • 3.边前序遍历边向创建的数组中存入二叉树节点的值
  • 完整代码

题目介绍

Leetcode144. 二叉树的前序遍历-C语言_第1张图片
Leetcode144. 二叉树的前序遍历-C语言_第2张图片

题目分析

题目要求我们输出二叉树按前序遍历排列的每个节点的值。

解题思路

1.创建一个数组来储存二叉树节点的值

2.根据二叉树的大小来开辟数组的大小

int Treesize(struct TreeNode* root)
{
    if(root==NULL)
    return 0;
    
    return 1+Treesize(root->left)+Treesize(root->right);
}

 int*new=(int*)malloc(sizeof(int)*Treesize(root));

3.边前序遍历边向创建的数组中存入二叉树节点的值

void preorder(struct TreeNode* root,int*new,int*newsize)
{
    if(root==NULL)
    return;
    new[(*newsize)++]=root->val;
    preorder(root->left,new,newsize);
    preorder(root->right,new,newsize);
}

完整代码

int Treesize(struct TreeNode* root)
{
    if(root==NULL)
    return 0;
    
    return 1+Treesize(root->left)+Treesize(root->right);
}

void preorder(struct TreeNode* root,int*new,int*newsize)
{
    if(root==NULL)
    return;
    new[(*newsize)++]=root->val;
    preorder(root->left,new,newsize);
    preorder(root->right,new,newsize);
}
int* preorderTraversal(struct TreeNode* root, int* returnSize) {
    int*new=(int*)malloc(sizeof(int)*Treesize(root));
   *returnSize=0;
 preorder(root,new,returnSize);
 return new;
}

你可能感兴趣的:(数据结构刷题,c语言,算法,数据结构)