- 定义TreeNode数组,存入中序遍历结果;
- 建立双向链表关系,返回链表头结点。
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
class Solution {
public:
void minOrder(TreeNode* node, vector<TreeNode*>& result) {
if (node == NULL) return;
if (node->left) minOrder(node->left, result);
result.push_back(node);
if (node->right) minOrder(node->right, result);
}
TreeNode* Convert(TreeNode* pRootOfTree) {
if (pRootOfTree == NULL) return pRootOfTree;
vector<TreeNode*> result;
minOrder(pRootOfTree, result);
for (int i = 0; i < result.size() - 1; i++) {
result[i]->right = result[i + 1];
result[i + 1]->left = result[i];
}
return result[0];
}
};