题目:输入一颗二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的节点,只能调整树中节点的指向。
分析:由于要求转换之后的链表是排好序的,我们采用中序遍历,遍历树中的每一个节点。根节点、左子树和右子树。在把左、右子树都转换成双向链表之后再和根节点连接起来,整颗二叉树就转换成了排序好的双向链表。
实现如下:

/*
struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {}
};*///每次遇到一个节点就会接入双向链表,所以要更新双向链表最后一个节点的值,因此,这里参数用TreeNode**
void ConvertNode(TreeNode*pnode,TreeNode**plastnodeinlist)
{if(pnode==NULL)return;if(pnode->left)ConvertNode(pnode->left,plastnodeinlist);pnode->left=*plastnodeinlist;               //每次遇到一个节点就接入双向链表中if(*plastnodeinlist)(*plastnodeinlist)->right=pnode;*plastnodeinlist=pnode;if(pnode->right)ConvertNode(pnode->right,plastnodeinlist);
}TreeNode* Convert(TreeNode*root)
{TreeNode*plastnodeinlist=NULL; //指向双向链表最后一个节点ConvertNode(root,&plastnodeinlist);TreeNode* pheadoflist=plastnodeinlist;while(pheadoflist!=NULL&&pheadoflist->left!=NULL)pheadoflist=pheadoflist->left;return pheadoflist;
}

二叉树应用_二叉搜索树与双向链表相关推荐

  1. 二叉树OJ(一)二叉树的最大深度 二叉搜索树与双向链表 对称的二叉树

    二叉树的最大深度 二叉树中和为某一值的路径(一) 二叉搜索树与双向链表 对称的二叉树 二叉树的最大深度 描述 求给定二叉树的最大深度, 深度是指树的根节点到任一叶子节点路径上节点的数量. 最大深度是所 ...

  2. [二叉树]二叉搜索树转换为双向链表(剑指Offer26)

    [试题描述] 将二叉搜索树转换为双向链表 对于二叉搜索树,可以将其转换为双向链表,其中,节点的左子树指针在链表中指向前一个节点,右子树指针在链表中指向后一个节点. 思路一: 采用递归思想,对于二叉搜索 ...

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

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

  4. java 双向链表_Day26:二叉搜索树与双向链表

    剑指Offer_编程题--二叉搜索树与双向链表 题目描述: 输入一颗二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的节点.只能调整树中节点指针的指向. 具体要求: 时间限制: ...

  5. java面试(二)--(1)EJB的几种类型(2)Hibernate的悲观锁和乐观锁(3) 二叉搜索树与双向链表

    1.请说明一下EJB的几种类型分别是什么? EJB(Enterprise JavaBean)是J2EE服务器端的组件模型,EJB包括会话Bean(Session Bean).实体Bean(Entity ...

  6. 【剑指offer-C++】JZ36:二叉搜索树与双向链表

    [剑指offer-C++]JZ36:二叉搜索树与双向链表 题目描述 解题思路 题目描述 描述:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.如下图所示: 数据范围:输入二叉树的节点数 0 ...

  7. JZ36 二叉搜索树与双向链表

    目录 题目介绍 二叉搜索树性质介绍 题目分析 解题方法 代码实现 题目介绍 题目链接 JZ36 二叉搜索树与双向链表 题目描述 输入一颗二叉搜索树,将该二叉搜索树转换为一个排序的双向链表 如: 题目要 ...

  8. 剑指offer:面试题36. 二叉搜索树与双向链表

    题目: 二叉搜索树与双向链表 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表.要求不能创建任何新的节点,只能调整树中节点指针的指向. 为了让您更好地理解问题,以下面的二叉搜索树为例: ...

  9. C语言判断二叉树是否为二叉搜索树(附完整源码)

    C语言判断二叉树是否为二叉搜索树 C语言判断二叉树是否为二叉搜索树完整源码(定义,实现,main函数测试) C语言判断二叉树是否为二叉搜索树完整源码(定义,实现,main函数测试) #include ...

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

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

最新文章

  1. 详解物联网的中间件:为何说它是不可或缺的?
  2. C# 跨线程赋值的简单做法
  3. hostswap dcevm
  4. 基于事件驱动架构构建微服务第16部分:Azure Active Directory B2C
  5. Acer Travelmate T3290笔记本拆机指南
  6. 套接字设置为(非)阻塞模式
  7. 【转】ABP源码分析十九:Auditing
  8. jupyter notebook代码导出_Jupyter Notebook导出包含中文的pdf_亲测有效
  9. 矩阵特征值的用matlab,[急求]谁可以用matlab帮我运行求矩阵特征值的命令???...
  10. 就地过年的年轻人都去搜索“年夜饭”外卖了
  11. 初步认识图像的直方图
  12. Win10下 vc++6.0打开文件闪退解决
  13. x86汇编_间接寻址-间接操作数_笔记_11
  14. KIBA 和 Davis 数据集下载 以及部分学习笔记
  15. 头盔-看完就不会买错的VR头盔攻略:VR头盔到底选哪个?
  16. 笔记本式计算机处理器,问答:笔记本电脑如何选择处理器
  17. 基于Windows系统的文件查重小程序
  18. 前端Vue项目搭建过程概述
  19. [附源码]Python计算机毕业设计飞羽羽毛球馆管理系统
  20. .net 可选择的转型路径

热门文章

  1. HLA RTI(Run-time Infrastructure)
  2. 简单剖析B树(B-Tree)与B+树
  3. java代码实现流程中的会签_Activiti实现会签功能
  4. 城市社会经济专项规划之生态人居规划
  5. 姿态估计1-06:FSA-Net(头部姿态估算)-源码无死角讲解(1)-训练代码总览
  6. 实验验证二项分布(Binomial)公式正确性
  7. linux退出编辑菱宏,Confluence 6 空间中的常用宏
  8. 第二十章 齐桓公大婚冤家又聚首 宋闵公嘲笑重臣丢君命(
  9. 小程序-JAVA服务端解密与微信绑定的手机号
  10. 易基因|ChIP-seq分析方法:实用的工作流程和高级应用