二叉搜索树与双向链表
来源:互联网 发布:男朋友短小的体验知乎 编辑:程序博客网 时间:2024/06/11 23:19
题目描述
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
这个题目点在哪,采用中序遍历,输入的是根节点,返回值也是根节点,整体的思路是
若采用中序遍历,其遍历顺序为1-2-3-4-5-6-7,通过适当的指针变换操作,可变成的双向有序链表如下:
就是为了4的左指针指向2,2的右指针指向4;4的右指针指向5,5的左指针指向4
class
Solution {
public
:
TreeNode* Convert(TreeNode* pRootOfTree)
{
if
(pRootOfTree == NULL)
return
pRootOfTree;
pRootOfTree = ConvertNode(pRootOfTree);
while
(pRootOfTree->left) pRootOfTree = pRootOfTree->left;
return
pRootOfTree;
}
TreeNode* ConvertNode(TreeNode* root)
{
if
(root == NULL)
return
root;
if
(root->left)
{
TreeNode *left = ConvertNode(root->left);
while
(left->right) left = left->right;
left->right = root;
root->left = left;
}
if
(root->right)
{
TreeNode *right = ConvertNode(root->right);
while
(right->left) right = right->left;
right->left = root;
root->right = right;
}
return
root;
}
};
0 0
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- POJ2586-Y2K Accounting Bug
- 从kxmovie代码看iOS上OpenGL ES的显示流程
- poj3274 Gold Balanced Lineup
- maven 学习总结
- 链式队列头结点好处优点
- 二叉搜索树与双向链表
- android studio 编译出错 报错日志:Error:Execution failed for task ':app:transformClassesWithDexForDebug'. > c
- java接口,集合框架,泛形。
- 异或的运用 交换两个数的值
- 剑指offer - 数值的整数次方
- maven parent
- 一个简单的自定义view(补间动画)
- KMP算法 --数据结构实验之串一:KMP简单应用
- 解密jQuery事件核心 - 自定义设计(三)