安徽建设通网站,设置wordpress网页私有,百度企业推广怎么收费,赣州高端网站开发给出二叉树的根结点#xff0c;返回二叉树的中序遍历序列。 二叉树的中序遍历序列是先遍历左子树再遍历根结点然后再遍历右子树#xff0c;在遍历左子树是这个结点是左子树的根结点#xff0c;左子树有左子树和根结点右子树#xff0c;也就是说在遍历的时候我们要递归遍历。…给出二叉树的根结点返回二叉树的中序遍历序列。 二叉树的中序遍历序列是先遍历左子树再遍历根结点然后再遍历右子树在遍历左子树是这个结点是左子树的根结点左子树有左子树和根结点右子树也就是说在遍历的时候我们要递归遍历。 在递归遍历中我们需要不断的进行分配空间与释放空间然后我们在这个过程中不断的进行序列的合并在合并的过程中需要我们注意的是合并的顺序是左子树、根结点、右子树同时在合并之后要将合并后的returnSize计算出来。 在这一个二叉树的中序遍历中有一点那个归并排序的感觉将问题分解成小问题后得到答案然后再答案合并非常像不知道大家有没有这一种感觉。
int * inorderTraversal(struct TreeNode * root, int *returnSize){if(root!NULL){int *left inorderTraversal(root-left, returnSize);int leftLength *returnSize; int *right inorderTraversal(root-right, returnSize);int rightLength *returnSize;int num leftLength rightLength;int *answer (int *)malloc(sizeof(int)*(num1));int k 0;for(int i0; ileftLength; i){answer[k] left[i];}answer[k] root-val;for(int i0; irightLength; i){answer[k] right[i];}free(left);free(right);left NULL;right NULL;*returnSize num1;return answer;}*returnSize 0;return NULL;
}运行结果截图