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

二叉搜索树与双向链表

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

/*
struct TreeNode {
	int val;
	struct TreeNode *left;
	struct TreeNode *right;
	TreeNode(int x) :
			val(x), left(NULL), right(NULL) {
	}
};*/

class Solution {
public:
	// 返回的第一个指针,即为最小值,先定为NULL
	TreeNode* head = NULL;
	// 中序遍历当前值得上一位,初始为最小值,先定为NULL
	TreeNode* pre = NULL;
    TreeNode* Convert(TreeNode* pRootOfTree) {
        if(!pRootOfTree)
			// 中序递归,叶子为空则返回
			return NULL;
		// 首先递归到最左最小值
		Convert(pRootOfTree->left);	// 左
		// 找到最小值,初始化head和pre
		if(pre == NULL){
			head = pRootOfTree;
			pre = pRootOfTree;
		}
		// 当前节点与上一节点建立连接,将pre设置为当前值
		else{
			pre->right = pRootOfTree;
			pRootOfTree->left = pre;
			pre = pRootOfTree;
		}
		Convert(pRootOfTree->right);	// 右
		return head;
    }
};

全部评论

相关推荐

点赞 评论 收藏
分享
脾气小祖宗:这简历摸到都得狠狠地消毒液洗手😂
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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