class Solution {
public:
TreeNode* pre;
void bianli(TreeNode* p){
if(p->left != NULL) bianli(p->left);
if(pre != p){ //头节点不用操作
pre->right = p;
p->left = pre;
pre = p;
}
if(p->right != NULL) bianli(p->right);
return;
}
TreeNode* Convert(TreeNode* pRootOfTree) {
if(pRootOfTree == NULL) return {};
pre = pRootOfTree;
while(pre->left != NULL) pre = pre->left; //找到返回值的头节点,用于初始化
TreeNode* res = pre; //res为头节点,用于返回
bianli(pRootOfTree);
return res;
}
};
//时空复杂度都是On 没有看到空间O1原地操作的

京公网安备 11010502036488号