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

二叉搜索树与双向链表

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) {
	}
};*/

获取左右子树双向链表,则只需要让当前根节点的左右指针指向左链表的最后一个节点,右指针指向右链表的第一个节点,并返回第一个节点

#include <cstddef>
#include <vector>
class Solution {
public:
    TreeNode* Convert(TreeNode* pRootOfTree) {
		if(pRootOfTree==nullptr) return nullptr;
		TreeNode* leftnode = Convert(pRootOfTree->left);
		TreeNode* rightnode = Convert(pRootOfTree->right);
		if(rightnode != nullptr){
			pRootOfTree->right = rightnode;
			rightnode->left = pRootOfTree;
		}
		if(leftnode != nullptr){
			while(leftnode->right!=nullptr){
				leftnode = leftnode->right;
			}
			pRootOfTree->left = leftnode;
			leftnode->right = pRootOfTree;
		}
		while(pRootOfTree->left != nullptr){
			pRootOfTree = pRootOfTree->left;
		}
		return pRootOfTree;
    }
};



全部评论

相关推荐

12-03 03:32
安徽大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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