剑指offer:面试题36. 二叉搜索树与双向链表
题目: 二叉搜索树与双向链表
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。
为了让您更好地理解问题,以下面的二叉搜索树为例:
我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是最后一个节点,最后一个节点的后继是第一个节点。
下图展示了上面的二叉搜索树转化成的链表。“head” 表示指向链表中有最小元素的节点。
特别地,我们希望可以就地完成转换操作。当转化完成以后,树中节点的左指针需要指向前驱,树中节点的右指针需要指向后继。还需要返回链表中的第一个节点的指针。
解题:
class Solution {
public:Node* treeToDoublyList(Node* root) {if(!root) return nullptr;Node* head = nullptr, *pre = nullptr;helper(root, head, pre);head->left = pre;pre->right = head;return head;}void helper(Node* root, Node*& head, Node*& pre) {if(!root) return;helper(root->left, head, pre);if(!head) {head = root; // 找到headpre = root; // 对pre进行初始化} else {pre->right = root;root->left = pre;pre = root;}helper(root->right, head, pre);}
};
剑指offer:面试题36. 二叉搜索树与双向链表相关推荐
- 剑指Offer - 面试题36. 二叉搜索树与双向链表(中序循环/递归)
1. 题目 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表.要求不能创建任何新的节点,只能调整树中节点指针的指向. 特别地,我们希望可以就地完成转换操作.当转化完成以后,树中节点的左指 ...
- 剑指offer面试题36. 二叉搜索树与双向链表(中序遍历)(递归)
题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表.要求不能创建任何新的节点,只能调整树中节点指针的指向. 思路 详见链接 代码 #class Node: # def __ini ...
- 剑指offer面试题[27]-二叉搜索树与双向链表
题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向. /* struct TreeNode {int val;struct Tr ...
- 剑指Offer - 面试题33. 二叉搜索树的后序遍历序列(递归)
1. 题目 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果.如果是则返回 true,否则返回 false.假设输入的数组的任意两个数字都互不相同. 参考以下这颗二叉搜索树:5/ \2 6 ...
- 剑指Offer - 面试题54. 二叉搜索树的第k大节点(二叉树循环遍历)
1. 题目 给定一棵二叉搜索树,请找出其中第k大的节点. 示例 1: 输入: root = [3,1,4,null,2], k = 13/ \1 4\2 输出: 4示例 2: 输入: root = [ ...
- 剑指offer面试题54. 二叉搜索树的第k大节点(逆中序遍历)
题目描述 给定一棵二叉搜索树,请找出其中第k大的节点. 思路 详见链接 代码 class Solution:def kthLargest(self, root:TreeNode, k:int)-> ...
- 剑指offer面试题33. 二叉搜索树的后序遍历序列(二叉树)(递归)
题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果.如果是则返回 true,否则返回 false.假设输入的数组的任意两个数字都互不相同. 思路 详见链接 代码 class Sol ...
- 剑指offer(C++)-JZ36:二叉搜索树与双向链表(数据结构-树)
作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.如下图所示 数据范围:输 ...
- 剑指offer(牛客)---26.二叉搜索树与双向链表
题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向. /** public class TreeNode {int val = ...
- 剑指Offer - 九度1367 - 二叉搜索树的后序遍历序列
剑指Offer - 九度1367 - 二叉搜索树的后序遍历序列2013-11-23 03:16 题目描述: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出 ...
最新文章
- [算法] 举一反三之n重复数组中找唯一m重复异类数
- System.IO 的三个抽象类
- 高斯噪声和椒盐噪声python
- 100个网络基础必备知识 ,值得收藏!
- ASP.NET MVC 入门1、简介
- 测试python第二周_python第二周作业
- 创邻科技张晨:智能物联为图数据库的迅速发展提供了良好应用场景
- org.springframework.dao.InvalidDataAccessApiUsageException
- SAP License:创建新的库存地点
- CCF201512-5 矩阵【矩阵快速幂】(募集解题代码)
- 判断一个整数是不是回文
- idea ****.class拒绝访问
- Item 22: 当使用Pimpl机制时,在实现文件中给出特殊成员函数的实现
- goback history 传递参数_vue-router go(-1)后退时怎么带参数?
- 国内身份证号码的正则验证
- python scipy 密度函数 分位数 累计函数计算p值 卡方检验 t检验 F检验 假设检验 AB实验 显著性检验
- asp.net mvc 客户端加验证非空验证数据库是否存在验证
- IIS三种应用程序池回收方法(保姆级教程)
- BZOJ1003 物流运输(dp+spfa)
- Qt中父类向子类发送信号
热门文章
- python关于字典的操作
- Django缓存机制
- Docker 仓库管理
- Linux下DB2数据库安装教程
- Oracle Data Guard 理论知识
- c#中分割字符串的几种方法
- [Quiz]竞赛题目 Word Trace
- usaco The Castle
- intval0.57100 php_php中0,'',null,false,true,FLASE,TREU,array()的相等恒等学习
- python二叉树遍历算法_分享python实现的二叉树定义与遍历