题目描述:
给定一个二叉树,返回他的中序遍历
分析:
1、什么是中序遍历?简单来说就是 “左根右”
2、实现这个算法需要做什么准备工作?要想让二叉树中的结果能够输出出来首先需要明确二叉树中总共的结点个数以及一个用来存储各个结点数据的变量。接着就是考虑结点应该做的事情利用递归实现中序遍历。
代码:
void inorder(struct TreeNode* root,int* returnSize,int *a)//中序遍历二叉树
{
if(!root) return;
inorder(root->left,returnSize,a);
a[(*returnSize)++]=root->val;
inorder(root->right,returnSize,a);
}
int size(struct TreeNode* root)//求二叉树数据个数
{
if(!root) return 0;
return size(root->left)+size(root->right)+1;
}
int* inorderTraversal(struct TreeNode* root, int* returnSize){
int treesize=size(root);
int *a=(int*)malloc(treesize*sizeof(int));
memset(a,0,treesize);//内存空间初始化
*returnSize=0;
inorder(root,returnSize,a);
return a;
}