代码如下
#include<stdio.h>
#include<stdlib.h>
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
int* preorderTraversal(struct TreeNode* root, int* returnSize) {
int* res = (int*)malloc(sizeof(int) * 100);
struct TreeNode* stack[100];
int head = 0;
int tail = 0;
struct TreeNode* node = root;
int k = 0;
while (node || head != tail) {//头结点存在 或 栈不为空
if (node) {//头结点存在
res[k++] = node->val;//结点数据入队列
stack[tail++] = node;//结点指针入栈
node = node->left;//结点指针向左下移动
}
else {//栈不空
node = stack[--tail];//出栈一个结点指针
node = node->right;//结点指针向右下移动
}
}
*returnSize = k;
return res;
}
int main() {}