题目描述:
给定一个二叉树的根节点 root ,返回它的中序遍历序列。
解决方案:由于直接递归会导致,无法保存遍历过程中的值,所以开辟一个新的函数,在参数中传递数组的引用,作出改变即可。
①C++语言:
class Solution {
public:
void inorder(TreeNode* root,vector& v){
if(root){
inorder(root->left,v);
v.push_back(root->val);
inorder(root->right,v);
}
}
vector inorderTraversal(TreeNode* root) {
vector v;
inorder(root,v);
return v;
}
};
②Java语言:
class Solution {
void inorder(TreeNode root,ArrayList list){
if(root!=null){
inorder(root.left,list);
list.add(root.val);
inorder(root.right,list);
}
}
public List inorderTraversal(TreeNode root) {
ArrayList list = new ArrayList<>();
inorder(root,list);
return list;
}
}
③C语言:
void inorder(struct TreeNode *root,int *array,int *returnSize){
if(root){
inorder(root->left,array,returnSize);
//在这里做出改变,即可不用担心进入顺序问题
array[(*returnSize)++]=root->val;
inorder(root->right,array,returnSize);
}
}
int* inorderTraversal(struct TreeNode* root, int* returnSize){
*returnSize=0;
//未知开辟大小,即开辟501
int *array=(int*)malloc(sizeof(int)*501);
inorder(root,array,returnSize);
return array;
}



