面试题: 二叉搜索树转换成有序双向链表
来源:互联网 发布:windows server怎么看 编辑:程序博客网 时间:2024/06/05 09:32
因为二叉搜索树的中序遍历是有序的,所以以中序遍历实现,要是双向链表,我们可以将结点的左孩子转换成前驱指针,结点的右孩子转换成后继指针。(可以用一个prev指针来记录前一个结点,然后把prev的right(后继)指向cur,把cur的left(前驱)指向prev,之后再更新prev的值。)
template<typename T> class TreeToList { typedef Node<T> Node; public: TreeToList() {} Node*& Transfrom(Node* &head) //head是搜索树的根节点 { Node* prev = NULL; _Transfrom(head,prev); //转换成双向链表 while (head->_left) //寻找链表的头 head = head->_left; return head; } protected: //采用中序线索化的思想,将left变为前驱指针,right变为后继指针 void _Transfrom(Node* root,Node* &prev) { if (root == NULL) return; Node* cur = root; _Transfrom(cur->_left ,prev); if (prev) { prev->_right = cur; } cur->_left = prev; prev = cur; _Transfrom(cur->_right ,prev); } };
阅读全文
0 0
- 360面试题——搜索二叉树转换成有序的双向链表
- 面试题: 二叉搜索树转换成有序双向链表
- 面试题27:二叉搜索树转换为有序双向链表
- 【面试题】二叉搜索树转换双向链表
- 二叉搜索树转换成有序双向链表
- 【面试题】剑指Offer-27-将二叉搜索树转换成排序的双向链表
- 【面试题】剑指offer27--将一颗二叉搜索树转换成一个排序的双向链表
- 剑指offer面试题-二叉搜索树转换成一个排序的双向链表
- 二叉搜索树转换为有序双向链表
- 二叉搜索树转换为有序双向链表
- 二叉搜索树转换为有序双向链表
- 二叉搜索树转换为有序双向链表
- 二叉搜索树转换为有序双向链表
- 面试题27:二叉排序树转换成有序双向链表
- 剑指offer 面试题27 二叉搜索树转换为排序双向链表
- 《剑指Offer》面试题:二叉搜索树转换为双向链表
- 面试题27:二叉搜索树与双向链表转换
- 【IT笔试面试题整理】二叉搜索树转换为双向链表
- 重构二叉树,java实现,剑指offer原题
- 《An Introduction to Ray Tracing》—— 2.5 Ray/Quadric Intersection And Mapping
- EclipseLink学习(三)--- 一对多映射
- 关于srtuts1.2提交表单到actionform出现乱码的情况
- Mvp模式--xlistview上拉加载下拉刷新——桃先森_
- 面试题: 二叉搜索树转换成有序双向链表
- 告诉你们!我是怎么与Linux系统触电的!
- android.app.IntentReceiverLeaked:...
- Oracle 数据库文件只读
- 历届试题 连号区间数
- 线程池技术
- 跑马灯与地图合用会闪烁
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
- Combination Sum系列总结