二叉搜索树变双向链表
2016-05-20 16:56
381 查看
//输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。 //要求不能创建任何新的结点,只能调整树中结点指针的指向。 #include "stdlib.h" struct BinaryTreeNode { int m_nValue; BinaryTreeNode* m_pLeft; BinaryTreeNode* m_pRight; }; //第一种需要额外空间,先中序,再连。 //第二种,不用额外空间。 BinaryTreeNode* convert(BinaryTreeNode* pRootOfTree) { if (pRootOfTree == NULL) return NULL; BinaryTreeNode* leftList = convert(pRootOfTree->m_pLeft); if (leftList != NULL) { BinaryTreeNode* leftLast = leftList; while (leftLast->m_pRight != NULL) leftLast = leftLast->m_pRight; leftLast->m_pRight = pRootOfTree; pRootOfTree->m_pLeft = leftLast; } else { pRootOfTree->m_pLeft = NULL; leftList = pRootOfTree; } BinaryTreeNode* right = convert(pRootOfTree->m_pRight); if (right != NULL) { right->m_pLeft = pRootOfTree; } pRootOfTree->m_pRight = right; return leftList; } //左指针变前向指针,右指针变后向指针
相关文章推荐
- ACM--抛物线和直线围成的面积–-HDOJ 1071--The area--水
- struts2+jquery+json集成
- BestCoder Round #56 Clarke and problem
- ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint......
- tomcat管理脚本
- Unity 基础 - 刚体和 Collider
- WPF中Popup控件更换Child后位置显示不正确
- js跨域请求
- java-RCP
- Hibernate_OneToMany_Demo
- Android自定义控件之组合控件学习笔记分享
- C语言第十五篇:C语言中.h和.c文件解析(很精彩)
- 阿里面试算法题--版本号更新
- 面试感悟----一名3年工作经验的程序员应该具备的技能
- Table选项卡切换效果的实现
- 50个必备的实用jQuery代码段
- Centos 7 安装python2.7.11
- android camera 3d特效 详解与进阶
- Python 写入 Mysql 乱码问题
- 详解Android中AsyncTask的使用