【剑指offer】二叉搜索树转换为有序双向链表。要求不创建新节点。只改变指向。
来源:互联网 发布:云计算安全问题实例 编辑:程序博客网 时间:2024/05/21 13:58
问题:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
解析思路:可知二叉搜索树的左节点值比根节点值小。右节点值比根节点值大。所以总体来说,左子树上所有节点的值都比根节点的值小,右子树上所有节点的值都比根节点的值大。对二叉搜索树进行中序遍历得到的结果便是有序序列。例如:
4
/ \
2 6
/ \ / \
1 3 5 7
中序遍历结果便是: 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7
那么,去推导这个规则吧。
/** public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/public class Solution { public TreeNode Convert(TreeNode pRootOfTree) { if(pRootOfTree == null) return null; if(pRootOfTree.left==null&&pRootOfTree.right==null) return pRootOfTree ; TreeNode left = Convert(pRootOfTree.left); TreeNode p = left; while(p!=null&&p.right!=null){ p = p.right; } if(left!=null){ p.right = pRootOfTree; pRootOfTree.left = p; } TreeNode right = Convert(pRootOfTree.right); if(right != null){ pRootOfTree .right = right; right.left = pRootOfTree ; } return left!=null?left:pRootOfTree ; }}
阅读全文
0 0
- 【剑指offer】二叉搜索树转换为有序双向链表。要求不创建新节点。只改变指向。
- 题目:将二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向
- 二叉搜索树转换为有序双向链表
- 二叉搜索树转换为有序双向链表
- 二叉搜索树转换为有序双向链表
- 二叉搜索树转换为有序双向链表
- 二叉搜索树转换为有序双向链表
- java 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
- 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向
- (Java实现)输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向
- 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
- 牛客原题 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
- 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
- 将一颗搜索树转换成一个排序的双向链表。要求不能创建任何新的节点
- 二叉搜索树->双向有序链表,不能产生新的节点。
- 读剑指offer有感--搜索二叉树转化为有序双向链表
- 剑指offer 面试题27 二叉搜索树转换为排序双向链表
- 《剑指Offer》面试题:二叉搜索树转换为双向链表
- QT控件样式设计,Qt中漂亮的几款QSS
- Python学习(十二)——pandas函数库1
- AJAX的使用及规范格式
- MySQL索引总结
- 自定义View之线性百分比进度条
- 【剑指offer】二叉搜索树转换为有序双向链表。要求不创建新节点。只改变指向。
- 用Python实现简单的服务器
- AngularJS实现长按事件监听(ng-onhold)
- 结构体与类(静态类、抽象类)学习
- Java反射机制
- Android.mk添加本地程序和库的经常使用模版
- Recurrent neural network based language model翻译(部分)
- 邮件营销中如何引导用户注册才能有效预防退订?
- IsIconic()和OnPaint()函数