输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。二叉搜索树的中序遍历即是有序的,中序遍历同时转变即可,转换左子树,左子树最右边,为左子树有序的最后一个节点为lastnode,root->left=lastnode如..
分类:
其他好文 时间:
2015-09-25 11:24:31
阅读次数:
116
题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。算法描述使用递归,分别去将当前节点的左右子树变成双向链表,然后获取左边链表的最后一个元素,当前元素的左指针指向它,它的右指针指向当前元素;右边链表的第一个元素,它的左指针指向当前元素,当前元素的右指针指向它;然后从当前元素开始,不断从左边找,找到第一个元素,返回此元素的指针。总结...
分类:
其他好文 时间:
2015-09-19 06:15:01
阅读次数:
135
题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 1 /* 2 struct TreeNode { 3 int val; 4 struct TreeNode *left; 5 struct TreeNo...
分类:
其他好文 时间:
2015-08-30 19:21:40
阅读次数:
160
输入一颗二叉搜索树,将该二叉搜索树转换成一个排序的双向两步。空间复杂度为O(1).
最笨的方法就是中序遍历放在一个数组或链表中,再次遍历串联起来。但是要求空间复杂度为O(1),就没办法这么做了,这时候可以参考这个解法。http://blog.csdn.net/my_jobs/article/details/47666909判断一个树是不是一颗二叉搜索树,可以模仿最后的那个方法。
本题跟...
分类:
其他好文 时间:
2015-08-17 15:31:46
阅读次数:
131
题目:输入一颗二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建新的结点,只能调整树中结点指针的指向。
比如如下图中的二叉搜索树,则输出转换之后的排序双向链表为:
在二叉树中,每个结点都有两个指向子节点的指针。在双向链表中,每个结点也有两个指针,他们分别指向前一个结点和后一个结点。由于这两种结点的结构相似,同时二叉搜索树也是一种排序的数据结构,因此在理论上有可能实现二叉搜...
分类:
编程语言 时间:
2015-08-07 09:41:48
阅读次数:
153
问题描述:
输入一棵二叉搜索树,现在要将该二叉搜索树转换成一个排序的双向链表。而且在转换的过程中,不能创建任何新的结点,只能调整树中的结点指针的指向来实现。
解析:
借助二叉树中序遍历,因为中序遍历二叉搜索树的特点就是从小到大访问结点。当遍历访问到根结点时,假设根结点的左侧已经处理好,只需将根结点与上次访问的最近结点(左子树中最大值结点)的指针连接好即可。进而更新当前链表的最后一个结点指针。
递归算法:
(1)中序遍历。
(2)原先指向左子结点的指针调整为链表中指向前一个结点的指针,原先指向右子结点...
分类:
其他好文 时间:
2015-07-10 11:26:22
阅读次数:
118
题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点的方向。如下图所示:二叉树的结点定义如下:1 struct BinaryTreeNode2 {3 int m_nValue;4 BinaryTreeNode* m_pLeft;...
分类:
其他好文 时间:
2015-07-09 17:37:54
阅读次数:
99
题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
二叉树结点的定义如下:
struct BinaryTreeNode{
int m_nValue;
BinaryTreeNode *m_pLeft;
BinaryTreeNode *m_pRight;
};解法如下:
//返回双向链表的头结点
BinaryTreeNo...
分类:
其他好文 时间:
2015-05-26 00:22:39
阅读次数:
154
题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中节点的指针指向。二叉树的结点定义如下:structBinaryTreeNode
{
intm_nValue;
BinaryTreeNode*m_pLeft;
BinaryTreeNode*m_pRight;
}利用递归来解决问题BinaryTreeN..
分类:
其他好文 时间:
2014-12-02 17:31:26
阅读次数:
104
题目要求:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。解决思路: 1. 根据观察可知,双向链表顺序即为二叉树的中序遍历结果----->采用中序遍历+递归; 2. 中序遍历顺序为:左+中+右,传入一个变量pre。 pre可...
分类:
其他好文 时间:
2014-10-26 18:16:35
阅读次数:
210