题干
给定一个二叉树,返回它的中序 遍历。
示例:
输入: [1,null,2,3]
1
\
2
/
3
输出: [1,3,2]
Code
- 这道题虽然一般,但重拾C++编程,收获到很多当时没注意的点,比如这种写法真的有醍醐灌顶之感
TreeNode(int x) : val(x), left(NULL), right(NULL) {};
想到当时不注意初始化问题而花费很多经历取解决Bug, 真的太生产力了typedef struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} }TreeNode,*Tree; class Solution { public: vector<int> inorderTraversal(TreeNode* root) { vector<int> v; helpInorderTraversal(root, v); return v; } void helpInorderTraversal(TreeNode* root, vector<int> &v) { if (root) { helpInorderTraversal(root->left, v); v.push_back(root->val); helpInorderTraversal(root->right, v); } } };
测试代码
#include<iostream>
#include<vector>
using namespace std;
// Definition for a binary tree node.
typedef struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
}TreeNode,*Tree;
class Solution {
public:
vector<int> inorderTraversal(TreeNode* root) {
vector<int> v;
helpInorderTraversal(root, v);
return v;
}
void helpInorderTraversal(TreeNode* root, vector<int> &v) {
if (root) {
helpInorderTraversal(root->left, v);
v.push_back(root->val);
helpInorderTraversal(root->right, v);
}
}
};
int main()
{
Tree T = new TreeNode(1);
Tree temp = T;
temp->right = new TreeNode(2);
temp = temp->right;
temp->left = new TreeNode(3);
Solution s;
vector<int> v = s.inorderTraversal(T);
for (auto i : v) {
cout << i << " ";
}
return 0;
}