剑指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:33 陕西
收藏了,楼主还有其它解题思路吗?
点赞 回复 分享
发布于 2023-04-06 14:51 陕西

相关推荐

感性的干饭人在线蹲牛友:🐮 应该是在嘉定这边叭,禾赛大楼挺好看的
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务