剑指offer:二叉搜索树与双向链表

二叉搜索树是一种特殊的二叉树,它的每个节点值大于它的左子节点,小于它右子节点;我们只要对它中序遍历就可以得到递增双向链表。先定义个头指针pRootOfTree,遍历这个结点的所有左子树,找到最小的那个,当指向当前遍历的前一节点pre为空时,把遍历到的最小左子树节点赋给pre和head指针,当pre不为空时,把根节点pRootOfTree给前一节点pre的右子节点(还是在整个左子树中),在把pre指向右子节点的左子树,都遍历完,最后把更新pre;然后进入到右子树,按左子树的方式处理,最后返回head!!!

#include <cstddef>
class Solution {
  public:
    TreeNode* head = nullptr;
    TreeNode* pre = nullptr;
    TreeNode* Convert(TreeNode* pRootOfTree) {
        if (pRootOfTree == nullptr) return nullptr;
		Convert(pRootOfTree -> left);
		if(pre == nullptr) {
			pre = pRootOfTree;
			head = pRootOfTree;
		}
		else{
			pre->right = pRootOfTree;
			pRootOfTree->left = pre;

			pre = pRootOfTree;
		}
		Convert(pRootOfTree->right);
		return head;



    }
};

#剑指offer##23届找工作求助阵地#
全部评论
收藏了,楼主还有其它解题思路吗?
点赞 回复 分享
发布于 2023-04-06 14:51 陕西
二叉搜索树的中序遍历是:左=>根=>右; 二叉搜索树的中序遍历从小到大是有序的,是这样的吧?
点赞 回复 分享
发布于 2023-04-06 14:33 陕西

相关推荐

09-01 11:31
门头沟学院 Java
buul:七牛云的吧,感觉想法是好的,但是大家没那么多时间弄他这个啊。。。不知道的还以为他是顶尖大厂呢还搞比赛抢hc,只能说应试者的痛苦考察方是无法理解的,他们只会想一出是一出
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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