函数原型:int* PreOrderTraverSal(struct TreeNode* root, int* returnSize);returnSize拿到二叉树结点个数,返回前序遍历结果存的空间起始地址。
方法一:
在C语言中,我们需要创建一个动态顺序表来存储二叉树的遍历顺序,但是如果在C++中的话,可以直接使用vector,它就是现成的动态顺序表。
//先创建一个动态顺序表,并且实现其中一些简单的接口
typedef struct SeqList
{
int* array;
int size;
int capacity;
}SeqList;
void mySeqListInit(SeqList* s, int capacity)//初始化
{
s->array = (int*)malloc(capacity * sizeof(int));
s->capacity = capacity;
s->size = 0;
}
void CheckCapacity(SeqList* s)//检查并扩容
{
if (s->size == s->capacity)
{
s->capacity *= 2;
int* tmp = realloc(s->array, s->capacity*sizeof(int));
if (tmp)
{
s->array = tmp;
}
}
}
void mySeqListPush(SeqList* s, int x)//尾插
{
CheckCapacity(s);
s->array[s->size] = x;
s->size++;
}
void _PreOrderTraverSal(struct Node* root