题目描述

输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。

思路:

由于二叉搜索树的特点可以知道,他的中序遍历就是他的排序,重点是怎么把各个结点的值连起来,形成双向链表。我们使用非递归的中序遍历来试一下。

代码:

public class Solution {TreeNode Head = null;public TreeNode Convert(TreeNode pRootOfTree) {if(pRootOfTree == null)return pRootOfTree;TreeNode curr = pRootOfTree;TreeNode pre = null;Stack<TreeNode> stack = new Stack<>();while(curr != null || !stack.isEmpty()){if(curr != null){stack.push(curr);curr = curr.left;}else{curr = stack.pop();if(Head == null){Head = curr;pre = Head;}//说明是第一个else{pre.right = curr;curr.left = pre;pre = curr;}curr = curr.right;}}return Head;}}

附上非递归中序二叉树的代码:

class Solution {public List<Integer> inorderTraversal(TreeNode root) {List<Integer> list = new ArrayList<>();if(root==null){return list;}Stack<TreeNode> stack = new Stack<>();TreeNode curr = root;while(curr != null || !(stack.isEmpty())){if(curr!= null){stack.push(curr);curr = curr.left;}else{curr = stack.pop();list.add(curr.val);curr = curr.right;}}return list;}
}

每天一道剑指offer-二叉搜索树与双向链表相关推荐

  1. [剑指offer]二叉搜索树的后序遍历数列

    [剑指offer]二叉搜索树的后序遍历数列 剑指offer-二叉搜索树的后序遍历序列 题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果.如果是则返回 true,否则返回 fals ...

  2. C#刷剑指Offer | 二叉搜索树的后序遍历序列

    [C#刷题]| 作者 / Edison Zhou 这是EdisonTalk的第289篇原创内容 我们来用之前学到的数据结构知识来刷<剑指Offer>的一些核心题目(精选了其中30+道题目) ...

  3. [剑指offer] 二叉搜索树的后序遍历序列

    二叉搜索树的后序遍历序列 P157 题目:输入一个数组,判断这个数组是不是一个二叉搜索树的后序遍历的结果. solution:我们知道后序遍历序列的最后一个item是根节点,如果确实是二叉搜索树的后序 ...

  4. 剑指offer——二叉搜索树的后序遍历序列

    二叉搜索树的后序遍历序列 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 这里遇到的问题就是,传递的子数组怎 ...

  5. 剑指offer 二叉搜索树的后序遍历

    题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2. ...

  6. 二叉搜索树的第k个节点java_剑指Offer62:二叉搜索树的第k个结点(Java)

    思路分析: 首先了解搜索二叉树在中序遍历下的结果是有序的.设一个全局变量num记录次数,每当中序遍历到一个节点时,num++.当num等于k时,返回node即结果. 难在递归上 题目描述 给定一棵二叉 ...

  7. 剑指offer-JZ54 二叉搜索树的第k个节点(附思路)

    描述 给定一棵结点数为n 二叉搜索树,请找出其中的第 k 小的TreeNode结点值. 1.返回第k小的节点值即可 2.不能查找的情况,如二叉树为空,则返回-1,或者k大于n等等,也返回-1 3.保证 ...

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

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

  9. 【重点】剑指offer——面试题27:二叉搜索树与双向链表

    剑指offer--面试题27:二叉搜索树与双向链表 Solution1: 这是书上的代码,要理解好最近几道题,对指针的操作比较多... class Solution { public:TreeNode ...

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

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

最新文章

  1. List集合的三个实现类比较
  2. log4php的使用
  3. 样式文件修改后不起作用_Word样式,这个功能好用到让你忘不了!
  4. Python入门100题 | 第019题
  5. 使用SublimeText 作为Python 的开发环境
  6. 了解jQuery技巧来提高你的代码
  7. android iot代码设计,一个简单好用的Android Tab 设计与实现
  8. mysql回滚部分记录_MySQL事务部分回滚-回滚到指定保存点
  9. [转载] 用pandas进行数据分析实战
  10. java实现动态规划求解给定矩阵的和最大的子数组(矩阵中数字正负均存在)
  11. bandzip屏蔽广告
  12. python计算FID
  13. PT100三线制恒流源接法
  14. 轻量级网络Ghostnet(GhostConv(幻影卷积)、Ghost BottleNeck)详解
  15. 电子电路基础 (3)——示波器的使用
  16. 小程序setData报错未定义
  17. 随机漫步模拟及概率分析
  18. C语言每日一练——第67天:谁在说谎问题
  19. Linux下无法加载Qt platform plugin “xcb“
  20. leetcode系列特殊篇(跟着东哥总结二分法)

热门文章

  1. Java与模式:装饰(Decorator)模式
  2. 新物联网时代的整合战略
  3. composer安装和使用
  4. HTML5 input新增属性
  5. 阅读 图解HTTP ,读书笔记
  6. 学习:大文件统计与排序
  7. PHP - ReflectorClass 反射类的作用
  8. 简记mysql在tomcat下和hibernate一起使用,No suitable driver found for的问题
  9. Exchange 2010安装必要条件
  10. 6.深入分布式缓存:从原理到实践 --- Memcached 周边技术