/* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } };*/ class Solution { public: stack<TreeNode*> s; //可以换成vector //翻转的中序遍历 void LDR(TreeNode* p) { if(p->right!=NULL){ LDR(p->right); } s.push(p); if(p->left!=NULL){ LDR(p->left); } } TreeNode* Convert(TreeNode* pRootOfTree) { if(pRootOfTree==NULL) return NULL; if(pRootOfTree->left==NULL && pRootOfTree->right==NULL) return pRootOfTree; LDR(pRootOfTree); TreeNode* head = s.top(); TreeNode* p = head; head->left = NULL; TreeNode* q; s.pop(); while(!s.empty()) { q = s.top(); s.pop(); p->right = q; q->left = p; p = q; p->right = NULL; } return head; } };
原文:https://www.cnblogs.com/loyolh/p/12343036.html