剑指offer 27: 二叉搜索树与双向链表
题目描述
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
解题思路
- 递归调用左子树;
- 把原左节点的指针调整为指向链表中指向前一个节点的指针;
- 把原右节点的指针调整为指向链表中指向后一个节点的指针;
- 递归调用右子树;
- 终止条件为节点为NULL。
/*
struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {}
};*/
class Solution {
public:TreeNode* Convert(TreeNode* pRootOfTree){TreeNode* pList = NULL;ConvertNode(pRootOfTree, &pList);//pList 为尾节点,需返回头节点TreeNode* pRes = pList;while(pRes != NULL && pRes->left != NULL) pRes = pRes->left;return pRes;}void ConvertNode(TreeNode* pNode, TreeNode** pList){if(pNode==NULL) return;// 递归左子树TreeNode* pCur=pNode;if(pCur->left !=NULL) ConvertNode(pCur->left, pList);// 把原左节点的指针调整为指向链表中指向前一个节点的指针;// 把原右节点的指针调整为指向链表中指向后一个节点的指针;pCur->left = *pList;if(*pList != NULL) (*pList)->right = pCur;// 递归右子树*pList = pCur;if(pCur->right != NULL) ConvertNode(pCur->right, pList);}
};
剑指offer 27: 二叉搜索树与双向链表相关推荐
- 【LeetCode】剑指 Offer 36. 二叉搜索树与双向链表
[LeetCode]剑指 Offer 36. 二叉搜索树与双向链表 文章目录 [LeetCode]剑指 Offer 36. 二叉搜索树与双向链表 package offer;//定义节点 class ...
- 【剑指offer】二叉搜索树转双向链表,C++实现
原创博文,转载请注明出处! # 题目 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向. 二叉树节点的定义 struct TreeNod ...
- 【Java】 剑指offer(36) 二叉搜索树与双向链表
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不 ...
- 【LeetCode笔记】剑指 Offer 36. 二叉搜索树与双向链表(Java、二叉树、链表、原地算法)
文章目录 题目描述 思路 && 代码 1. 非原地算法 2. 原地算法 二刷 题目描述 谈到二叉搜索树,那就得考虑考虑中序遍历啦- 这道题对中序遍历的理解提升很有好处! 思路 & ...
- [剑指offer] 36. 二叉搜索树与双向链表
题目 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表.要求不能创建任何新的节点,只能调整树中节点指针的指向. 需要返回双向链表最左侧的节点. 思路 1 排序链表:利用二叉搜索树的中序遍 ...
- 剑指offer之二叉搜索树和双向链表
1 问题 比如我们搜索二叉树如下,我们需要变成双向链表 2 分析 我们知道这个变成双向链接的时候是按照树的中序遍历打印的,我们只需要在中序遍历打印的时候操作该节点,我们可以用临时变量保存这个节点,同时 ...
- 【算法】剑指 Offer 36. 二叉搜索树与双向链表
1.概述 地址:https://leetcode-cn.com/problems/er-cha-sou-suo-shu-yu-shuang-xiang-lian-biao-lcof/ /* // De ...
- 2021-08-19剑指 Offer 36. 二叉搜索树与双向链表
我的思路: 前序遍历保证链表的有序性,并且在这个遍历的同时调整指针的指向 class Solution {public:Node* treeToDoublyList(Node* root) {if(r ...
- 【LeetCode】剑指 Offer 33. 二叉搜索树的后序遍历序列
[LeetCode]剑指 Offer 33. 二叉搜索树的后序遍历序列 文章目录 [LeetCode]剑指 Offer 33. 二叉搜索树的后序遍历序列 package offer;public cl ...
- 【LeetCode】剑指 Offer 54. 二叉搜索树的第k大节点
[LeetCode]剑指 Offer 54. 二叉搜索树的第k大节点 文章目录 [LeetCode]剑指 Offer 54. 二叉搜索树的第k大节点 一.中序遍历(提前返回) 一.中序遍历(提前返回) ...
最新文章
- maven多模块eclipse jetty热部署
- ubuntu9.10配置编译xawtv-3.95
- MySQL-索引优化篇(1)_安装演示库 [前缀索引、联合索引、覆盖索引] explain参数
- 排序算法 | 直接插入排序算法的图解、实现、复杂度和稳定性分析
- R运行大数据的过程中遇到的问题:不能有负长度矢量
- brk(), sbrk() 用法详解【转】
- nginx源码初读(1)--让烦恼从数据结构开始(ngx_cdecl/ngx_int/ngx_log)
- C. Orac and LCM(数论lcm, gcd)
- 单片机常用的几种通信协议
- 鼠标悬浮改变背景颜色
- 中标麒麟共享win7打印机_win10与win7系统电脑通过局域网共享打印机的方法
- 小米平板5系列将有三个版本:搭载全新骁龙860芯片
- linux裸分区如何区分,Linux 裸设备基础知识
- 三大知名PHP开源多用户商城系统对比
- 快速入门spring data jpa 2,多表操作,逻辑删除
- win7计算机ip地址怎么查,win7电脑的IP地址怎样查看
- Ruby + Passenger 5 分钟 入门
- MATLAB函数汇总
- 阿里云服务器远程桌面连接
- 基于激光雷达实现三边定位算法开发记录(五)——三角函数法拟定圆心