剑指offer - 二叉搜索树转双向链表
来源:互联网 发布:mac版chrome没有flash 编辑:程序博客网 时间:2024/06/05 22:54
题目:输入一棵二叉搜索树,将其转为排序的双向链表,且要求不能创建任何新的结点,只能调整树中结点指针的指向。
二叉树结点定义如下:
struct BinaryTreeNode{int value;BinaryTreeNode *pLeft;BinaryTreeNode *pRight;};
思路:由于是二叉搜索树,因此其中序遍历算法可以按照从小到大的顺序遍历二叉树的每个结点。在把左、右子树都转换成排序的双向链表之后再和根节点连接起来,整棵二叉树也就转换成了排序的双向链表。
代码实现:
BinaryTreeNode* BinaryTree2List( BinaryTreeNode* pRoot ){BinaryTreeNode *pLastNode = NULL;ConvertNode( pRoot, &pLastNode );BinaryTreeNode* pHeadNode = pLastNode;while( pHeadNode != NULL && pHeadNode->pLeft != NULL){pLastNode = pLastNode->pLeft;}return pHeadNode;}void ConvertNode( BinaryTreeNode* pRoot, BinaryTreeNode** pLastNode ){if( pRoot == NULL )return;BinaryTreeNode *currentNode = pRoot;if( currentNode->pLeft )ConvertNode(currentNode->pLeft, *pLastNode );currentNode->pLeft = *pLastNode;if( *pLastNode != NULL )*pLastNode->pRight = currentNode;*pLastNode = currentNode;if( currentNode->pRight )ConvertNode(currentNode->pRight, *pLastNode );}
0 0
- 【剑指offer】二叉搜索树转双向链表
- 剑指offer - 二叉搜索树转双向链表
- 【剑指offer】之二叉搜索树转双向链表
- 剑指Offer二叉搜索树与双向链表
- 【剑指offer:】Q27:二叉搜索树与双向链表
- 剑指offer--二叉搜索树与双向链表
- 剑指offer 27 - 二叉搜索树与双向链表
- 剑指offer-二叉搜索树与双向链表
- 《剑指offer》二叉搜索树与双向链表
- 【剑指Offer】二叉搜索树与双向链表
- 剑指offer—二叉搜索树与双向链表
- 剑指offer:二叉搜索树与双向链表
- 剑指offer-二叉搜索树与双向链表
- 剑指Offer--027-二叉搜索树与双向链表
- 剑指offer:二叉搜索树与双向链表
- [剑指offer]二叉搜索树与双向链表
- 《剑指offer》-二叉搜索树与双向链表
- 剑指offer-27二叉搜索树与双向链表
- Java中的null到底是什么?
- 学习ThinkPHP3.2.2:视频7中的跳转
- 洛谷2161[Shoi2009]Booking 会场预约(set)
- 03crawler02 爬取贴吧排名, 制作图片集
- 【Web安全与防御】简析Sql注入与防御措施
- 剑指offer - 二叉搜索树转双向链表
- C语言的动态数组函数的sizeof、malloc和free
- 软工视频(四)——软件设计
- 学习ThinkPHP3.2.2:video7中url模式配置
- HTML学习记录<四> :创建图像映射
- 关于数组的个人理解
- String,StringBuffer与StringBuilder的区别
- KNN分类
- LeetCode题解:Path Sum II