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

二叉搜索树与双向链表

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;
    }
};



全部评论

相关推荐

点赞 评论 收藏
分享
三分入剑:我觉得还是学历问题 如果你真的想要进大厂不想在小厂的话读个211得研究生吧 我感觉简历还没你好呢 我都实习了俩月了 我投了一百多份能投出20多份简历 能面试六七次 我们部门只招研究生了都 现在连9本都很难找到像样的大厂了 你又没打过rm这种 我觉得想要进步的话就考个研究生吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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