二叉树应用_二叉搜索树与双向链表
题目:输入一颗二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的节点,只能调整树中节点的指向。
分析:由于要求转换之后的链表是排好序的,我们采用中序遍历,遍历树中的每一个节点。根节点、左子树和右子树。在把左、右子树都转换成双向链表之后再和根节点连接起来,整颗二叉树就转换成了排序好的双向链表。
实现如下:
/*
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;
}
二叉树应用_二叉搜索树与双向链表相关推荐
- 二叉树OJ(一)二叉树的最大深度 二叉搜索树与双向链表 对称的二叉树
二叉树的最大深度 二叉树中和为某一值的路径(一) 二叉搜索树与双向链表 对称的二叉树 二叉树的最大深度 描述 求给定二叉树的最大深度, 深度是指树的根节点到任一叶子节点路径上节点的数量. 最大深度是所 ...
- [二叉树]二叉搜索树转换为双向链表(剑指Offer26)
[试题描述] 将二叉搜索树转换为双向链表 对于二叉搜索树,可以将其转换为双向链表,其中,节点的左子树指针在链表中指向前一个节点,右子树指针在链表中指向后一个节点. 思路一: 采用递归思想,对于二叉搜索 ...
- 【剑指offer】二叉搜索树转双向链表,C++实现
原创博文,转载请注明出处! # 题目 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向. 二叉树节点的定义 struct TreeNod ...
- java 双向链表_Day26:二叉搜索树与双向链表
剑指Offer_编程题--二叉搜索树与双向链表 题目描述: 输入一颗二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的节点.只能调整树中节点指针的指向. 具体要求: 时间限制: ...
- java面试(二)--(1)EJB的几种类型(2)Hibernate的悲观锁和乐观锁(3) 二叉搜索树与双向链表
1.请说明一下EJB的几种类型分别是什么? EJB(Enterprise JavaBean)是J2EE服务器端的组件模型,EJB包括会话Bean(Session Bean).实体Bean(Entity ...
- 【剑指offer-C++】JZ36:二叉搜索树与双向链表
[剑指offer-C++]JZ36:二叉搜索树与双向链表 题目描述 解题思路 题目描述 描述:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.如下图所示: 数据范围:输入二叉树的节点数 0 ...
- JZ36 二叉搜索树与双向链表
目录 题目介绍 二叉搜索树性质介绍 题目分析 解题方法 代码实现 题目介绍 题目链接 JZ36 二叉搜索树与双向链表 题目描述 输入一颗二叉搜索树,将该二叉搜索树转换为一个排序的双向链表 如: 题目要 ...
- 剑指offer:面试题36. 二叉搜索树与双向链表
题目: 二叉搜索树与双向链表 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表.要求不能创建任何新的节点,只能调整树中节点指针的指向. 为了让您更好地理解问题,以下面的二叉搜索树为例: ...
- C语言判断二叉树是否为二叉搜索树(附完整源码)
C语言判断二叉树是否为二叉搜索树 C语言判断二叉树是否为二叉搜索树完整源码(定义,实现,main函数测试) C语言判断二叉树是否为二叉搜索树完整源码(定义,实现,main函数测试) #include ...
- 【LeetCode】剑指 Offer 36. 二叉搜索树与双向链表
[LeetCode]剑指 Offer 36. 二叉搜索树与双向链表 文章目录 [LeetCode]剑指 Offer 36. 二叉搜索树与双向链表 package offer;//定义节点 class ...
最新文章
- 详解物联网的中间件:为何说它是不可或缺的?
- C# 跨线程赋值的简单做法
- hostswap dcevm
- 基于事件驱动架构构建微服务第16部分:Azure Active Directory B2C
- Acer Travelmate T3290笔记本拆机指南
- 套接字设置为(非)阻塞模式
- 【转】ABP源码分析十九:Auditing
- jupyter notebook代码导出_Jupyter Notebook导出包含中文的pdf_亲测有效
- 矩阵特征值的用matlab,[急求]谁可以用matlab帮我运行求矩阵特征值的命令???...
- 就地过年的年轻人都去搜索“年夜饭”外卖了
- 初步认识图像的直方图
- Win10下 vc++6.0打开文件闪退解决
- x86汇编_间接寻址-间接操作数_笔记_11
- KIBA 和 Davis 数据集下载 以及部分学习笔记
- 头盔-看完就不会买错的VR头盔攻略:VR头盔到底选哪个?
- 笔记本式计算机处理器,问答:笔记本电脑如何选择处理器
- 基于Windows系统的文件查重小程序
- 前端Vue项目搭建过程概述
- [附源码]Python计算机毕业设计飞羽羽毛球馆管理系统
- .net 可选择的转型路径
热门文章
- HLA RTI(Run-time Infrastructure)
- 简单剖析B树(B-Tree)与B+树
- java代码实现流程中的会签_Activiti实现会签功能
- 城市社会经济专项规划之生态人居规划
- 姿态估计1-06:FSA-Net(头部姿态估算)-源码无死角讲解(1)-训练代码总览
- 实验验证二项分布(Binomial)公式正确性
- linux退出编辑菱宏,Confluence 6 空间中的常用宏
- 第二十章 齐桓公大婚冤家又聚首 宋闵公嘲笑重臣丢君命(
- 小程序-JAVA服务端解密与微信绑定的手机号
- 易基因|ChIP-seq分析方法:实用的工作流程和高级应用