【剑指offer】二叉搜索树与双向链表
2017-07-15 22:13
459 查看
题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
分析:题目不能新建新的节点,只能用原有的节点来实现。我们知道对收索二叉树的中序遍历顺序正好是从小到大顺序遍历的,因此我想到先对二叉树进行中序遍历,把节点保存起来,然后在遍历每个节点,使其left指向前一个节点,right指向后一个节点。
程序:
分析:题目不能新建新的节点,只能用原有的节点来实现。我们知道对收索二叉树的中序遍历顺序正好是从小到大顺序遍历的,因此我想到先对二叉树进行中序遍历,把节点保存起来,然后在遍历每个节点,使其left指向前一个节点,right指向后一个节点。
程序:
void midiorder(TreeNode *pRootOfTree,vector<TreeNode *> &temp){ //中序遍历; if(pRootOfTree->left) midiorder(pRootOfTree->left,temp); temp.push_back(pRootOfTree); if(pRootOfTree->right) midiorder(pRootOfTree->right,temp); } TreeNode* Convert(TreeNode* pRootOfTree) { if(!pRootOfTree) return NULL; vector<TreeNode*> temp; midiorder(pRootOfTree,temp); int i=0; temp[0]->left=NULL; while(i<temp.size()){ if(i+1<temp.size()) temp[i]->right=temp[i+1]; if(i-1>=0) temp[i]->left=temp[i-1]; i++; } temp[i-1]->right=NULL; return temp[0]; }
相关文章推荐
- 9.剑指offer-二叉搜索树与双向链表
- 码农小汪-剑指Offer之24 -二叉搜索树与双向链表
- 剑指offer 二叉搜索树与双向链表
- 剑指Offer学习总结-二叉搜索树与双向链表
- 剑指offer(27)——二叉搜索树与双向链表
- 【剑指Offer面试题】 九度OJ1503:二叉搜索树与双向链表
- 剑指offer——二叉搜索树与双向链表
- 剑指offer刷题之c实现的二叉搜索树转换成双向链表
- 【剑指Offer】二叉搜索树与双向链表
- 剑指offer之面试题27:二叉搜索树与双向链表
- 剑指offer解题报告(Java版)——二叉搜索树转换为双向链表 27
- 【剑指offer】4.4分解让复杂问题简单化——面试题27:二叉搜索树与双向链表
- 剑指Offer之二叉搜索树与双向链表
- 剑指offer--二叉搜索树与双向链表
- 剑指offer——二叉搜索树与双向链表
- 剑指Offer—26—二叉搜索树与双向链表
- 剑指offer----二叉搜索树与双向链表----java实现
- 剑指Offer 27 二叉搜索树与双向链表
- 剑指offer 二叉搜索树与双向链表
- 【面试题】剑指Offer-27-将二叉搜索树转换成排序的双向链表