leetcode上求二叉树的中序遍历并用数组返回中序遍历的结果
由于二叉树所含节点数是未知的,需要用到vector容器,这个比数组好用,可以动态增加或削减容器大小
1.定义vector容器
vector<int> A; //容器存储的数据类型是int型,容器名是A;
2.在容器中添加一个元素
A.push_back(x); //在容器的最后一个位置插入变量x;
3.删除容器中最后一个元素;
A.pop_back(); //删除容器中最后一个元素
4.求容器的大小
A.size();
5.求容器中第i个元素,用法同数组
cout<<A[1]<<endl;//输出A中第2个元素
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
class Solution {
public:
//中序遍历
void middle(TreeNode* root,vector<int> &A){
if(root!=nullptr){
middle(root->left,A);
A.push_back(root->val);//在容器尾部插入元素
middle(root->right,A);
}
}
vector<int> inorderTraversal(TreeNode* root) {
if(root==nullptr){
return {};
}
vector<int> A;//自定义容器
middle(root,A);//对二叉树进行中序遍历
return A;
}
};