二叉搜索树与双向链表
来源:互联网 发布:如何提高雅思写作 知乎 编辑:程序博客网 时间:2024/06/07 09:02
题目描述
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
思路:
1、二叉搜索树转成双向链表时,从最左边开始,到父节点,再到右子树,符合中序遍历
2、转换成双向链表时,节点有左右两个节点引用,可将节点的右节点指向下一个节点,左节点指向上一个节点
3、当访问节点时,为了形成链表,确定指向,应访问当前节点时,保存上一个访问的节点
/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/public class Solution { TreeNode previous = null; public TreeNode Convert(TreeNode pRootOfTree) { if(null == pRootOfTree) return null; convertTo(pRootOfTree); return getLeftLastNode(pRootOfTree); } public TreeNode getLeftLastNode(TreeNode root){//获取最左节点 TreeNode leftLast = root; while(leftLast.left!=null){ leftLast = leftLast.left; } return leftLast; } public void convertTo(TreeNode current){ if(current!=null){ convertTo(current.left); if(previous != null){//previous的右节点为当前节点,当前节点的左节点为previous previous.right = current; current.left = previous; } previous = current;//previous保存访问过的上一个节点 convertTo(current.right); } }}
0 0
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- activiti如何画图连线配置参数
- 腾讯2016实习笔试题(最长回文子序列)
- android百度地图定位到非洲,解决办法
- 多线程经典问题--哲学家就餐问题解决方案JAVA实现
- 用Quartz处理定时执行的任务
- 二叉搜索树与双向链表
- Spring之初识JavaBean
- 【C语言】函数默认实现和用户自定义实现编程方法 -- 【weak, strong alias】
- 创建静态库
- 如何选择一个公司即使你拿到了公司offer
- Matlab之fgetl函数
- 报表设计-分组报表-分组小计
- WAS简介
- c#控制台输入语句