1. 题目

二叉树数据结构TreeNode可用来表示单向链表(其中left置空,right为下一个链表节点)。
实现一个方法,把二叉搜索树转换为单向链表,要求值的顺序保持不变,转换操作应是原址的,也就是在原始的二叉搜索树上直接修改。

返回转换后的单向链表的头节点。

示例:
输入: [4,2,5,1,3,null,6,0]
输出: [0,null,1,null,2,null,3,null,4,null,5,null,6]提示:
节点数量不会超过 100000。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/binode-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 循环中序遍历
class Solution {public:TreeNode* convertBiNode(TreeNode* root) {stack<TreeNode*> stk;TreeNode *prev = NULL, *tp, *head = NULL;while(root || !stk.empty()){while(root){stk.push(root);root = root->left;}tp = stk.top();stk.pop();tp->left = NULL;if(prev)prev->right = tp;if(!head)head = tp;prev = tp;root = tp->right;}return head;}
};

  • 递归解法
class Solution {TreeNode* prev = NULL;TreeNode* head = NULL;
public:TreeNode* convertBiNode(TreeNode* root) {if(!root)return NULL;convertBiNode(root->left);if(prev)prev->right = root;prev = root;root->left = NULL;if(!head){head = root;prev = root;}convertBiNode(root->right);return head;}
};

程序员面试金典 - 面试题 17.12. BiNode(BST中序遍历)相关推荐

  1. 程序员面试金典 - 面试题 17.08. 马戏团人塔(最长上升子序 DP/二分查找)

    文章目录 1. 题目 2. 解题 2.1 超时解 2.2 二分查找 1. 题目 有个马戏团正在设计叠罗汉的表演节目,一个人要站在另一人的肩膀上.出于实际和美观的考虑,在上面的人要比下面的人矮一点且轻一 ...

  2. 程序员面试金典 - 面试题 17.07. 婴儿名字

    题目难度: 中等 原题链接 今天继续更新程序员面试金典系列, 大家在公众号 算法精选 里回复 面试金典 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 每年,政府都会公布一万个最常见的婴 ...

  3. 程序员面试金典 - 面试题 17.06. 2出现的次数(找递推规律)

    1. 题目 编写一个方法,计算从 0 到 n (含 n) 中数字 2 出现的次数. 示例: 输入: 25 输出: 9 解释: (2, 12, 20, 21, 22, 23, 24, 25)(注意 22 ...

  4. 程序员面试金典 - 面试题 17.15. 最长单词(排序+递归)

    1. 题目 给定一组单词words,编写一个程序,找出其中的最长单词,且该单词由这组单词中的其他单词组合而成. 若有多个长度相同的结果,返回其中字典序最小的一项,若没有符合要求的单词则返回空字符串. ...

  5. 程序员面试金典 - 面试题 17.24. 最大子矩阵(转成一维最大子序和 DP)

    文章目录 1. 题目 2. 解题 2.1 前缀和(超时) 2.2 动态规划 1. 题目 给定一个正整数和负整数组成的 N × M 矩阵,编写代码找出元素总和最大的子矩阵. 返回一个数组 [r1, c1 ...

  6. 程序员面试金典 - 面试题 17.22. 单词转换(BFS)

    1. 题目 给定字典中的两个词,长度相等. 写一个方法,把一个词转换成另一个词, 但是一次只能改变一个字符. 每一步得到的新词都必须能在字典中找到. 编写一个程序,返回一个可能的转换序列.如有多个可能 ...

  7. 程序员面试金典 - 面试题 17.07. 婴儿名字(并查集)

    1. 题目 每年,政府都会公布一万个最常见的婴儿名字和它们出现的频率,也就是同名婴儿的数量. 有些名字有多种拼法,例如,John 和 Jon 本质上是相同的名字,但被当成了两个名字公布出来. 给定两个 ...

  8. 程序员面试金典 - 面试题 17.19. 消失的两个数字(数学/位运算)

    1. 题目 给定一个数组,包含从 1 到 N 所有的整数,但其中缺了两个数字. 你能在 O(N) 时间内只用 O(1) 的空间找到它们吗? 以任意顺序返回这两个数字均可. 示例 1: 输入: [1] ...

  9. 程序员面试金典 - 面试题 17.16. 理发师(动态规划DP)

    1. 题目 一个有名的理发师会收到源源不断的预约请求,每个预约都可以选择接或不接.在每次预约服务之间要有休息时间,因此她不能接受相邻的预约.给定一个预约请求序列,替理发师找到最优的预约集合(总预约时间 ...

最新文章

  1. 【FPGA】单端口RAM的设计(异步读、同步写)
  2. 选择排序_在N + 1场景中,使用@NamedEntityGraph更有选择地加载JPA实体
  3. 【转】Android使用嵌入式关系型SQLite数据库存储数据【学习记录】
  4. 欢迎使用Markdown
  5. c语言小游戏贪吃神,[原创]自己编的一个贪吃蛇小游戏
  6. 利用mysql提供的c语言接口操作数据库
  7. 使用dbca创建oracle实例
  8. 普通html优化处理,iOS 数据优化之处理HTML字符串
  9. 201409-2-画图
  10. 1.3、TetGen网格化过程之描述
  11. 高数18讲_1000题错题总结_第一讲
  12. python手机版做小游戏代码大全-20行python代码的入门级小游戏的详解
  13. matlab信号处理基础(音频和图像)
  14. 读取npy格式的文件
  15. 数据结构练习题——线性表
  16. 腾讯应用宝市场的app 安全评估报告怎么写
  17. 浅析deep深度选择器
  18. 搬运+机翻 Unity插件 OBICloth插件官方CharDemo分析
  19. 乌龟为什么喜欢叠罗汉!!!
  20. 十进制转换成十六进制小程序(强制转换和移位运算符)

热门文章

  1. pycharm之no python interpreter configured for project的解决办法
  2. css的属性是变量是怎么表达,CSS自定义属性(变量)
  3. 热血街头Java,下载_我爱法语 V3.01 多国语言版_6z6z下载站
  4. 华为手机怎么设置应用不全屏显示_手机投屏智能电视画面比例不合适怎么办?...
  5. 剑指offer:二叉树中和为某一值的路径
  6. php laypage,layui laypage组件常见用法总结
  7. 反射--Class获得
  8. JS代码优化工具Prepack
  9. oracle 重建 sys密码文件
  10. UDT中select异常