【思路】因为二叉搜索树的中序遍历就是递增排列的,所以只要在中序遍历时将每个结点放入vector中,再分别为每个结点的左右指针赋值即可。

 1 /*
 2 struct TreeNode {
 3     int val;
 4     struct TreeNode *left;
 5     struct TreeNode *right;
 6     TreeNode(int x) :
 7             val(x), left(NULL), right(NULL) {
 8     }
 9 };*/
10 class Solution
11 {
12 public:
13     vector<TreeNode *> nodeVector;
14
15     void inOrder(TreeNode* root)
16     {
17         if(root->left)
18             inOrder(root->left);
19         nodeVector.push_back(root);
20         if(root->right)
21             inOrder(root->right);
22     }
23
24     TreeNode* Convert(TreeNode* pRootOfTree)
25     {
26         if((pRootOfTree == NULL) || (!pRootOfTree->left) && (!pRootOfTree->right))
27             return pRootOfTree;
28         inOrder(pRootOfTree);
29         nodeVector[0]->left = NULL;
30         nodeVector[0]->right = nodeVector[1];
31         int i = 1;
32         for( ; i < nodeVector.size() - 1; i ++)
33         {
34             nodeVector[i]->left = nodeVector[i - 1];
35             nodeVector[i]->right = nodeVector[i + 1];
36         }
37         nodeVector[i]->left = nodeVector[i - 1];
38         nodeVector[i]->right = NULL;
39         return nodeVector[0];
40     }
41 };

转载于:https://www.cnblogs.com/lca1826/p/6496874.html

[剑指Offer] 26.二叉搜索树与双向链表相关推荐

  1. 【LeetCode】剑指 Offer 36. 二叉搜索树与双向链表

    [LeetCode]剑指 Offer 36. 二叉搜索树与双向链表 文章目录 [LeetCode]剑指 Offer 36. 二叉搜索树与双向链表 package offer;//定义节点 class ...

  2. 【剑指offer】二叉搜索树转双向链表,C++实现

    原创博文,转载请注明出处! # 题目 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向. 二叉树节点的定义 struct TreeNod ...

  3. 【Java】 剑指offer(36) 二叉搜索树与双向链表

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不 ...

  4. 【LeetCode笔记】剑指 Offer 36. 二叉搜索树与双向链表(Java、二叉树、链表、原地算法)

    文章目录 题目描述 思路 && 代码 1. 非原地算法 2. 原地算法 二刷 题目描述 谈到二叉搜索树,那就得考虑考虑中序遍历啦- 这道题对中序遍历的理解提升很有好处! 思路 & ...

  5. [剑指offer] 36. 二叉搜索树与双向链表

    题目 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表.要求不能创建任何新的节点,只能调整树中节点指针的指向. 需要返回双向链表最左侧的节点. 思路 1 排序链表:利用二叉搜索树的中序遍 ...

  6. 剑指offer之二叉搜索树和双向链表

    1 问题 比如我们搜索二叉树如下,我们需要变成双向链表 2 分析 我们知道这个变成双向链接的时候是按照树的中序遍历打印的,我们只需要在中序遍历打印的时候操作该节点,我们可以用临时变量保存这个节点,同时 ...

  7. 【算法】剑指 Offer 36. 二叉搜索树与双向链表

    1.概述 地址:https://leetcode-cn.com/problems/er-cha-sou-suo-shu-yu-shuang-xiang-lian-biao-lcof/ /* // De ...

  8. 2021-08-19剑指 Offer 36. 二叉搜索树与双向链表

    我的思路: 前序遍历保证链表的有序性,并且在这个遍历的同时调整指针的指向 class Solution {public:Node* treeToDoublyList(Node* root) {if(r ...

  9. 【LeetCode】剑指 Offer 33. 二叉搜索树的后序遍历序列

    [LeetCode]剑指 Offer 33. 二叉搜索树的后序遍历序列 文章目录 [LeetCode]剑指 Offer 33. 二叉搜索树的后序遍历序列 package offer;public cl ...

  10. 【LeetCode】剑指 Offer 54. 二叉搜索树的第k大节点

    [LeetCode]剑指 Offer 54. 二叉搜索树的第k大节点 文章目录 [LeetCode]剑指 Offer 54. 二叉搜索树的第k大节点 一.中序遍历(提前返回) 一.中序遍历(提前返回) ...

最新文章

  1. tongweb安装部署_Linux系统东方通部署iserver说明
  2. C#学习笔记(八)——定义类的成员
  3. 后缀数组--(可重叠最长重复子串问题)
  4. 赠与大学毕业生_出售,赠与或交易iPhone之前应该做什么
  5. 【渝粤教育】电大中专就业指导 (3)作业 题库
  6. 【No.1】基于Cookie的单点登录(SSO)
  7. C# Base64方式的编码与解码
  8. tenorflow+python程序打包成.exe(收集方法1)
  9. 知识竞赛时,竞赛活动主题及环节主题如何修改?
  10. 学校培训课程预约报名登记收缴费用小程序开发制作
  11. java中的IO整理(转)
  12. 7个月时间“从零到亿”,社交电商靠谱好物为何总能占据行业“C位”?
  13. vue 前端解析Excel
  14. 抖音新号怎么快速涨粉(8种抖音运营吸粉技巧)
  15. 通过URL访问韩国Naver地图
  16. CAM350导入rou文件报错‘No header % found,load stopped‘
  17. Hive案例之股票分析
  18. 汽车大数据洞察:慧数汽车发布《车评白皮书2019》
  19. CentOS 7 更改 任务栏 高度
  20. 游戏网站的设计与实现(HTML和CSS实现魔兽世界官网)

热门文章

  1. vscode-更换图标主题VSCode Icons.
  2. 如何隐藏Windows7 系统保留分区
  3. Sql Server 中 根据具体的值 查找该值所在的表和字段
  4. Linux下编译googletest
  5. Hibernate之一对多与多对一映射
  6. centOs环境初始化运行nginx+redis+zookeeper+dubbo_admin
  7. python怎么爬取一个网页图片_python3爬取网页图片
  8. Excel文件导入mysql数据库
  9. 象棋软件最强手机版_我说它是地表手机最强清理软件,没意见吧
  10. php round函数输出不对_PHP第一章-变量