#21二叉树的前序遍历#

二叉树的前序遍历

1.题目链接

链接

2.思路

根 左子树 右子树的顺序进行遍历

3.实现

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);
	//i要传地址过去 不然改变不了i
	_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(size * sizeof(int));
	int i = 0;
	_prevOrder(root, a, &i);
	//获取数组大小
	*returnSize = size;
	return a;
}

4.运行结果

#21二叉树的前序遍历#完

猜你喜欢

转载自blog.csdn.net/szh0331/article/details/128770955