(微软100题)1.把二元查找树转变成排序的双向链表
来源:互联网 发布:三菱编程软件gx works2 编辑:程序博客网 时间:2024/06/05 19:47
#include <iostream>using namespace std;/*1.把二元查找树转变成排序的双向链表题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。10/ \614/ \ / \4 8 12 16转换成双向链表4=6=8=10=12=14=16。*/struct Node{int data;Node *left;Node *right;Node(int d = 0, Node *lr = 0, Node *rr = 0):data(d), left(lr), right(rr){}};Node *create(){Node *root;Node *p4 = new Node(4);Node *p8 = new Node(8);Node *p6 = new Node(6, p4, p8);Node *p12 = new Node(12);Node *p16 = new Node(16);Node *p14 = new Node(14, p12, p16);Node *p10 = new Node(10, p6, p14);root = p10;return root;}Node *change(Node *p, bool asRight){if (NULL == p)return NULL;Node *pLeft = change(p->left, false);if (pLeft)pLeft->right = p;p->left = pLeft;Node *pRight = change(p->right, true);if (pRight)pRight->left = p;p->right = pRight;Node *r = p;if (asRight){while (r->left)r = r->left;}else{while (r->right)r = r->right;}return r;}void main(){Node *root = create();Node *tail = change(root, false);while (tail){cout << tail->data << " ";tail = tail->left;}cout << endl;root = create();Node *head = change(root, true);while (head){cout << head->data << " ";head = head->right;}cout << endl;system("pause");}
0 0
- (微软100题)1.把二元查找树转变成排序的双向链表
- 微软面试100题 第一题 把二元查找树转变成排序的双向链表
- 微软100题-第一题把二元查找树转变成排序的双向链表
- 【微软100题】001把二元查找树转变成排序的双向链表(树)
- (微软100题)把二元查找树转变成排序的双向链表
- 1. 微软面试题:把二元查找树转变成排序的双向链表(树)
- 微软面试(1/100)---把二元查找树转变成排序的双向链表
- 面试100题:1.把二元查找树转变成排序的双向链表
- 程序员面试100题---1.把二元查找树转变成排序的双向链表
- 面试100题:1.把二元查找树转变成排序的双向链表
- 【微软100面试题实现】第01题:把二元查找树转变成排序的双向链表
- 微软等数据结构+算法面试100题(43)-- 把二元查找树转变成排序的双向链表
- 把二元查找树转变成排序的双向链表
- 把二元查找树转变成排序的双向链表
- 把二元查找树转变成排序的双向链表
- .把二元查找树转变成排序的双向链表
- 把二元查找树转变成排序的双向链表
- 把二元查找树转变成排序的双向链表
- WHAT IS CTA
- 在jQuery EasyUI中实现对DataGrid进行编辑
- 快排cmp
- sed学习是使用
- IOS 通过Objective-C读取、解析Excel
- (微软100题)1.把二元查找树转变成排序的双向链表
- 编程之美1.4 买书问题
- 笔记本做无线路由器图像详细教程(转)新加win7 方法:
- 代码:Flex与数据库交互
- eclipse 调试framework
- dwr小例子最简单的
- shape
- Android APN配置
- spring 注入枚举类型和日期类型