0
点赞
收藏
分享

微信扫一扫

BM30 二叉搜索树与双向链表

墨香子儿 2022-04-13 阅读 46
C++

描述

输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。

思路:中序遍历

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

class Solution {
public:
	TreeNode* curNode = nullptr;
	TreeNode* pHead = nullptr;//存链表的头节点

	TreeNode* Convert(TreeNode* pRootOfTree) {
		if (pRootOfTree == nullptr)
			return nullptr;

		Convert(pRootOfTree->left);
		if (curNode == nullptr)
		{
			curNode = pRootOfTree;
			pHead = pRootOfTree;// 此时cur是最左侧的节点, 即根节点
		}
		else
		{
			curNode->right = pRootOfTree;//当前节点curNode的后继节点(right)是pRootOfTree
			pRootOfTree->left = curNode;//pRootOfTree的前驱节点(left)是curNode
			curNode = pRootOfTree;//将curNode向后移动
		}
		Convert(pRootOfTree->right);
		return pHead;
	}


};
举报

相关推荐

0 条评论