剑指offer-26.二叉搜索树与双向链表
来源:互联网 发布:java工作流开发 编辑:程序博客网 时间:2024/06/04 20:00
题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
思路:可以中序遍历,然后push到一个vector里面,然后改变指针指向,最后即可;递归解法不讨论,递归解法难理解
/*struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {}};*/class Solution {public: vector<TreeNode* >temp; //中序遍历值是有序的 void tranverse(TreeNode* pNode) { if (pNode == NULL) return; tranverse(pNode->left); temp.push_back(pNode); tranverse(pNode->right); } //再进行改变指针 TreeNode* gaibian() { //右指针 for (int i = 0; i < temp.size(); i++) { temp[i]->right = temp[i+1]; } //注意,最后一个节点的右指针附空 temp[temp.size()-1]->right = NULL; //左指针 for (int i = temp.size()-1; i > 0; i--) { temp[i]->left = temp[i-1]; } //同样,第一个节点的左指针附空 temp[0]->left = NULL; return temp[0]; } TreeNode* Convert(TreeNode* pRootOfTree) { if (NULL == pRootOfTree) return NULL; tranverse(pRootOfTree); return gaibian(); }};
0 0
- 剑指offer-26.二叉搜索树与双向链表
- [剑指Offer] 26.二叉搜索树与双向链表
- 剑指Offer二叉搜索树与双向链表
- 【剑指offer:】Q27:二叉搜索树与双向链表
- 剑指offer--二叉搜索树与双向链表
- 剑指offer 27 - 二叉搜索树与双向链表
- 剑指offer-二叉搜索树与双向链表
- 《剑指offer》二叉搜索树与双向链表
- 【剑指Offer】二叉搜索树与双向链表
- 剑指offer—二叉搜索树与双向链表
- 剑指offer:二叉搜索树与双向链表
- 剑指offer-二叉搜索树与双向链表
- 剑指Offer--027-二叉搜索树与双向链表
- 剑指offer:二叉搜索树与双向链表
- [剑指offer]二叉搜索树与双向链表
- 《剑指offer》-二叉搜索树与双向链表
- 剑指offer-27二叉搜索树与双向链表
- 剑指offer题解 二叉搜索树与双向链表
- linux下C结构体初始化
- 前端技术
- (POJ 3067)Japan 树状数组
- Qt多线程总结
- CSU-1212-中位数
- 剑指offer-26.二叉搜索树与双向链表
- B树的插入、删除与遍历
- 软件光栅化渲染器(三)
- csv 文件的创建
- 关于Tomcat脚本启动闪退问题
- 蓝桥杯 Java 入门训练 圆的面积
- Unreal Engin_画廊制作笔记 _008<灯光处理,夜晚的画廊灯光设置>
- hdu 5334
- 链表的翻转