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

怎甘沉沦 提交于 2019-12-21 08:55:20

题目是经典前序遍历,不同的是要把节点数据存到数组中,并返回 。解题要点就是把数组作为参数代入,随着循环存储节点数据。

int* preorderTraversal(struct TreeNode* root, int* returnSize) {
	int* ret =NULL;
    *returnSize=0;
	backtrack(root, returnSize, &ret);
	return ret;
}
void backtrack(struct TreeNode* root, int* returnSize, int** ret) {
	*ret = realloc(*ret, 4 * ((*returnSize) + 1));
	if (root == NULL);
	else {
		(*ret)[*returnSize] = root->val;
		(*returnSize)++;
		backtrack(root->left, returnSize, ret);
		backtrack(root->right, returnSize, ret);
	}
}
int* preorderTraversal(struct TreeNode* root, int* returnSize) {
	int* ret = NULL;
	*returnSize = 0;
	ret = malloc(4 * 256);
	backtrack(root, returnSize, ret);
	return ret;
}
void backtrack(struct TreeNode* root, int* returnSize, int* ret) {
	if (root == NULL);
	else {
		ret[*returnSize] = root->val;
		(*returnSize)++;
		backtrack(root->left, returnSize, ret);
		backtrack(root->right, returnSize, ret);
	}
	
}
int* preorderTraversal(struct TreeNode* root, int* returnSize){
struct TreeNode **stack=malloc(sizeof(struct TreeNode*)*100);
int top=-1;
if(root)
stack[++top]=root;
int *ret=malloc(100*sizeof(int));
*returnSize=0;
while(top!=-1){
    root=stack[top--];
    ret[(*returnSize)++]=root->val;
    
    if(root->right){
        stack[++top]=root->right;
    }
    if(root->left){
        stack[++top]=root->left;
    }
}
return ret;
}

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!