🍬个人主页:Yanni.—
🌈数据结构:Data Structure.
🎂C语言笔记:C Language Notes
计算结点数
首先得算出这个结点有多少,不然数组的空间无法开辟出来。
利用递归算法,算出结点数。
int TreeSize(struct TreeNode* root)
{
return root == NULL ? 0 : TreeSize(root->left) + TreeSize(root->right) + 1;
}
将数据并入数组
也是利用递归,将数据写入数组里面
void prevorder(struct TreeNode*root,int* a,int* pi)
{
if(root == NULL)
{
return;
}
a[*pi] = root->val;
++(*pi);
prevorder(root->left,a,pi);
prevorder(root->right,a,pi);
}
返回最终结果
利用算出的结点数确定数组开辟的空间。最后函数调用得出结果。
int* preorderTraversal(struct TreeNode* root, int* returnSize) {
int size = TreeSize(root);
int* a = (int*)malloc(sizeof(int)*size);
int i = 0;
prevorder(root,a,&i);
*returnSize = size;
return a;
}