中序遍历,将每个结点放到数组中,然后遍历数组中的元素
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
class Solution {
public:
vector<TreeNode*> vi;
void dfs(TreeNode* node) {
if (node) {
dfs(node -> left);
vi.push_back(node);
dfs(node -> right);
}
}
TreeNode* Convert(TreeNode* pRootOfTree) {
if (!pRootOfTree) return nullptr;
dfs(pRootOfTree);
for (int i=0; i<vi.size(); i++) {
// cout<<vi[i]->val<<endl;
if (i == 0) {
vi[i] -> left = nullptr;
} else {
vi[i] -> left = vi[i-1];
}
if (i == vi.size() - 1) {
vi[i] -> right = nullptr;
} else {
vi[i] -> right = vi[i+1];
}
}
return vi[0];
}
};