微软等数据结构+算法面试100题(43)-- 把二元查找树转变成排序的双向链表
2012-11-12 10:16
591 查看
把二元查找树转变成排序的双向链表
题目:
输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。
要求不能创建任何新的结点,只调整指针的指向。
10
/ \
6 14
/ \ / \
4 8 12 16
转换成双向链表
4=6=8=10=12=14=16。
题目:
输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。
要求不能创建任何新的结点,只调整指针的指向。
10
/ \
6 14
/ \ / \
4 8 12 16
转换成双向链表
4=6=8=10=12=14=16。
/* 1.把二元查找树转变成排序的双向链表 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不能创建任何新的结点,只调整指针的指向。 10 / \ 6 14 / \ / \ 4 8 12 16 转换成双向链表 4=6=8=10=12=14=16。 */ void TreeToList(TreeNode* root,TreeNode* &head,TreeNode* &pre) { if(root==NULL) return; TreeToList(root->left,head,pre); if(head==NULL) head=root; if(pre!=NULL) pre->right=root; root->left=pre; pre=root; TreeToList(root->right,head,pre); } void ShowList(TreeNode *head,TreeNode *last) { while(head!=NULL) { cout<<head->data<<" "; head=head->right; } cout<<endl; while(last!=NULL) { cout<<last->data<<" "; last=last->left; } cout<<endl; } void TreeToListTest() { TreeNode* root=NULL; cout<<"make tree"<<endl; MakeTree(root); cout<<"the tree : "; LevelOrderTraverse(root); cout<<"the tree : "<<endl; LevelOrderTraverse1(root); cout<<"the tree : "; PreOrderTraverseNoRecursion(root); TreeNode* head=NULL; TreeNode* pre=NULL; TreeToList(root,head,pre); ShowList(head,pre); }
相关文章推荐
- 把二元查找树转变成排序的双向链表——精选微软经典的算法面试100题中第一题
- 算法面试100题——1、把二元查找树转变成排序的双向链表
- 微软面试(1/100)---把二元查找树转变成排序的双向链表
- 微软100题-第一题把二元查找树转变成排序的双向链表
- 微软100题(1) 二元查找树转变成排序的双向链表
- 算法与数据结构面试题(1)-把二元查找树转变成排序的双向链表
- (微软100题)把二元查找树转变成排序的双向链表
- 程序员面试题精选100题(01)-把二元查找树转变成排序的双向链表[数据结构]
- (微软100题)1.把二元查找树转变成排序的双向链表
- (微软100题)1.把二元查找树转变成排序的双向链表
- 微软等面试100题筛选答案-1-二元查找树转换成一个排序的双向链表
- 面试100题:1.把二元查找树转变成排序的双向链表
- 面试100题:1 把二元查找树转变成排序的双向链表
- 【微软100面试题实现】第01题:把二元查找树转变成排序的双向链表
- 程序员面试题精选100题(01)-把二元查找树转变成排序的双向链表[数据结构]
- 面试100题:1.把二元查找树转变成排序的双向链表
- [面试中的算法]把二元查找树转变成排序的双向链表
- 微软面试题系列(一):把二元查找树转变成排序的双向链表
- 每天学一个算法(2)------二元查找树转变成排序的双向链表
- 数据结构练习(01)把二元查找树转变成排序的双向链表