题解 | #二叉搜索树与双向链表#

二叉搜索树与双向链表

https://www.nowcoder.com/practice/947f6eb80d944a84850b0538bf0ec3a5

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原地操作的

全部评论

相关推荐

辅助位:定时器项目都被用烂了,感觉
点赞 评论 收藏
分享
点赞 评论 收藏
分享
昨天 11:25
吉林大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务