leetcode-二叉树的中序遍历-36

题目要求
  给定一个二叉树的根节点 root ,返回它的 中序 遍历。

思路
  因为这个题需要以数组的形式返回,因此我们需要申请数组的大小,并且在返回值里面有一个returnSize,需要返回数组的大小,我们可以写一个TreeSize的函数,建立一个_inorderTraversal函数进行中序遍历把树的val存到数组中,然后返回数组。

图解
在这里插入图片描述

代码实现

int TreeSize(struct TreeNode* root)
{
	if (root == NULL)
	{
		return 0;
	}
	return 1 + TreeSize(root->left) + TreeSize(root->right);
}

void _inorderTraversal(struct TreeNode* root, int* arr, int* pi)
{
	if (root == NULL)
	{
		return;
	}

	_inorderTraversal(root->left, arr, pi);
	arr[(*pi)++] = root->val;
	_inorderTraversal(root->right, arr, pi);
}

int* inorderTraversal(struct TreeNode* root, int* returnSize){
	*returnSize = TreeSize(root);
	int* arr = (int*)malloc(*returnSize * sizeof(int));
	int i = 0;
	_inorderTraversal(root, arr, &i);

	return arr;
}

猜你喜欢

转载自blog.csdn.net/weixin_43580319/article/details/114867810
今日推荐