/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
class Solution {
public:
TreeNode* Convert(TreeNode* pRootOfTree) {
if(!pRootOfTree || (!pRootOfTree->left && !pRootOfTree->right)) {
return pRootOfTree;
}
auto left_head = Convert(pRootOfTree->left);
auto right_head = Convert(pRootOfTree->right);
if(left_head) {
auto left_tail = left_head;
while(left_tail->right) {
left_tail = left_tail->right;
}
left_tail->right = pRootOfTree;
pRootOfTree->left = left_tail;
}
if(right_head) {
right_head->left = pRootOfTree;
pRootOfTree->right = right_head;
}
if(left_head) {
return left_head;
} else {
return pRootOfTree;
}
}
};
典型递归

京公网安备 11010502036488号