每天一道剑指offer-二叉搜索树与双向链表
题目描述
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
思路:
由于二叉搜索树的特点可以知道,他的中序遍历就是他的排序,重点是怎么把各个结点的值连起来,形成双向链表。我们使用非递归的中序遍历来试一下。
代码:
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-二叉搜索树与双向链表相关推荐
- [剑指offer]二叉搜索树的后序遍历数列
[剑指offer]二叉搜索树的后序遍历数列 剑指offer-二叉搜索树的后序遍历序列 题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果.如果是则返回 true,否则返回 fals ...
- C#刷剑指Offer | 二叉搜索树的后序遍历序列
[C#刷题]| 作者 / Edison Zhou 这是EdisonTalk的第289篇原创内容 我们来用之前学到的数据结构知识来刷<剑指Offer>的一些核心题目(精选了其中30+道题目) ...
- [剑指offer] 二叉搜索树的后序遍历序列
二叉搜索树的后序遍历序列 P157 题目:输入一个数组,判断这个数组是不是一个二叉搜索树的后序遍历的结果. solution:我们知道后序遍历序列的最后一个item是根节点,如果确实是二叉搜索树的后序 ...
- 剑指offer——二叉搜索树的后序遍历序列
二叉搜索树的后序遍历序列 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 这里遇到的问题就是,传递的子数组怎 ...
- 剑指offer 二叉搜索树的后序遍历
题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2. ...
- 二叉搜索树的第k个节点java_剑指Offer62:二叉搜索树的第k个结点(Java)
思路分析: 首先了解搜索二叉树在中序遍历下的结果是有序的.设一个全局变量num记录次数,每当中序遍历到一个节点时,num++.当num等于k时,返回node即结果. 难在递归上 题目描述 给定一棵二叉 ...
- 剑指offer-JZ54 二叉搜索树的第k个节点(附思路)
描述 给定一棵结点数为n 二叉搜索树,请找出其中的第 k 小的TreeNode结点值. 1.返回第k小的节点值即可 2.不能查找的情况,如二叉树为空,则返回-1,或者k大于n等等,也返回-1 3.保证 ...
- 【LeetCode】剑指 Offer 36. 二叉搜索树与双向链表
[LeetCode]剑指 Offer 36. 二叉搜索树与双向链表 文章目录 [LeetCode]剑指 Offer 36. 二叉搜索树与双向链表 package offer;//定义节点 class ...
- 【重点】剑指offer——面试题27:二叉搜索树与双向链表
剑指offer--面试题27:二叉搜索树与双向链表 Solution1: 这是书上的代码,要理解好最近几道题,对指针的操作比较多... class Solution { public:TreeNode ...
- 剑指offer:面试题36. 二叉搜索树与双向链表
题目: 二叉搜索树与双向链表 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表.要求不能创建任何新的节点,只能调整树中节点指针的指向. 为了让您更好地理解问题,以下面的二叉搜索树为例: ...
最新文章
- List集合的三个实现类比较
- log4php的使用
- 样式文件修改后不起作用_Word样式,这个功能好用到让你忘不了!
- Python入门100题 | 第019题
- 使用SublimeText 作为Python 的开发环境
- 了解jQuery技巧来提高你的代码
- android iot代码设计,一个简单好用的Android Tab 设计与实现
- mysql回滚部分记录_MySQL事务部分回滚-回滚到指定保存点
- [转载] 用pandas进行数据分析实战
- java实现动态规划求解给定矩阵的和最大的子数组(矩阵中数字正负均存在)
- bandzip屏蔽广告
- python计算FID
- PT100三线制恒流源接法
- 轻量级网络Ghostnet(GhostConv(幻影卷积)、Ghost BottleNeck)详解
- 电子电路基础 (3)——示波器的使用
- 小程序setData报错未定义
- 随机漫步模拟及概率分析
- C语言每日一练——第67天:谁在说谎问题
- Linux下无法加载Qt platform plugin “xcb“
- leetcode系列特殊篇(跟着东哥总结二分法)