笔试题:用二叉树构造双向链表
来源:互联网 发布:linux home目录不见了 编辑:程序博客网 时间:2024/06/08 15:12
#include <iostream>#include <string.h>using namespace std;struct Node{ Node *left;//相当于双向链表的prev指针。 Node *right;//相当于双向链表的next指针。 char data; Node(char d = char()):data(d),left(NULL),right(NULL){}};class MTree{ public: MTree():root(NULL){} void Create_Tree(char *VLR,char *LVR) { int n = strlen(LVR); Create_Tree(root,VLR,LVR,n); } void Create_Tree(Node *&t,char *VLR,char *LVR,int n) { //构造二叉树。 if(n==0)return ; int i = 0; while(VLR[0]!=LVR[i])i++; t = new Node(VLR[0]); Create_Tree(t->left,VLR+1,LVR,i); Create_Tree(t->right,VLR+i+1,LVR+i+1,n-i-1); } void Create_DList(MTree &mt) { Node *pr = NULL; Create_DList(root,pr,mt.root); } static void Printf(MTree &mt) {//双向链表打印。 Node *p = mt.root; while(p!=NULL) { cout<<p->data<<" "; p=p->right; } } private: void Create_DList(Node *t,Node *&pr,Node *&mt) { //构造双向链表。 if(t==NULL) { return ; } Create_DList(t->left,pr,mt); if(t!=NULL) { t->left=pr; if(pr) pr->right = t; if(pr==NULL)mt=t; } if(pr!=NULL && pr->right==NULL) { pr->right=t; t->left = pr; } pr = t; Create_DList(t->right,pr,mt); } private: Node *root;};int main(){ char VLR[]="ABCDEFG"; char LVR[]="CBDAFEG"; MTree mt; mt.Create_Tree(VLR,LVR); MTree mtlist; mt.Create_DList(mtlist); MTree :: Printf(mtlist); return 0;}
1 0
- 笔试题:用二叉树构造双向链表
- 二叉查找树转双向链表(笔试)
- 【笔试】44、二叉搜索树与双向链表
- 笔试面试算法经典--二叉搜索树转有序的双向链表(Java)
- 【IT笔试面试题整理】二叉搜索树转换为双向链表
- 算法题:二叉搜索树与双向链表
- 【树】二叉树转为双向链表
- 二叉树转双向链表
- 二叉查找树转为双向链表
- 排序二叉树 生成双向链表
- 二叉查找树转为双向链表
- 二叉树转双向链表
- 二叉树转换为双向链表
- 二叉树转换为双向链表
- 二叉树转换为双向链表
- 算法-二叉树转双向链表
- 算法-二叉树转双向链表
- 二叉树转双向链表
- LeetCode题解——Count and Say
- ios基础杂项(随时更新)
- android 轻量级的友好的交互对话框库,EasyDialog,实现已详细标注
- maven编码GBK的不可映射字符
- Mac强制清空废纸篓
- 笔试题:用二叉树构造双向链表
- nyoj 33 蛇形填数【循环+数组】
- Android audio framework的一些业务流程
- C++对象模型读书笔记-- 虚表 virtual table
- 标题:AVL树的基本操作例程(1)
- iOS程序员面试题系列(3)
- poj 2887 Big String
- oracle触发器如何调试
- ArrayIndexOutOfBoundsException: 16384