博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
把二叉树转换成双向链表
阅读量:5875 次
发布时间:2019-06-19

本文共 1558 字,大约阅读时间需要 5 分钟。

// 把二叉树转换成双向链表.struct BinaryTreeNode{    int m_nValue;    BinaryTreeNode *m_pLeft;    BinaryTreeNode *m_pRight;public:    BinaryTreeNode(int v):m_nValue(v),m_pLeft(NULL),m_pRight(NULL){}};void Convert(BinaryTreeNode *t,BinaryTreeNode **head,BinaryTreeNode **last){    BinaryTreeNode *lh,*ll,*rh,*rl;    if(t!=NULL)    {        Convert(t->m_pLeft,&lh,&ll);        if(ll==NULL)        {            *head=t;        }        else        {            *head=lh;            ll->m_pRight=t;            t->m_pLeft=ll;        }        Convert(t->m_pRight,&rh,&rl);        if(rh==NULL)        {            t->m_pRight=NULL;            *last=t;        }        else        {            t->m_pRight=rh;            rh->m_pLeft=t;            *last=rl;        }    }    else    {        *head=NULL;        *last=NULL;    }}    BinaryTreeNode b1(10),b21(6),b22(14),b31(4),b32(8),b33(12),b34(16);    void printMidOrder(BinaryTreeNode *t)    {        if(t)        {            printMidOrder(t->m_pLeft);            cout<
<
m_nValue; printMidOrder(t->m_pRight); } }void main(){ b1.m_pLeft=&b21; b1.m_pRight=&b22; b21.m_pLeft=&b31; b21.m_pRight=&b32; b22.m_pLeft=&b33; b22.m_pRight=&b34; BinaryTreeNode *head,*last; printMidOrder(&b1); Convert(&b1,&head,&last); // 输出转换结果 BinaryTreeNode *p=head; while(p!=NULL) { cout<
<
m_nValue; p=p->m_pRight; } system("pause");}

 

转载于:https://www.cnblogs.com/dyc0113/p/3211957.html

你可能感兴趣的文章
安装gulp及相关插件
查看>>
如何在Linux用chmod来修改所有子目录中的文件属性?
查看>>
Applet
查看>>
高并发环境下,Redisson实现redis分布式锁
查看>>
乌克兰基辅一世遗修道院起火 现场火光照亮夜空
查看>>
[iOS 10 day by day] Day 2:线程竞态检测工具 Thread Sanitizer
查看>>
Centos/Ubuntu下安装nodejs
查看>>
关于浏览器的cookie
查看>>
Hyper-V 2016 系列教程30 机房温度远程监控方案
查看>>
国内先进的智能移动广告聚合平台-KeyMob聚合
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
PHP - 如何打印函数调用树
查看>>
js闭包
查看>>
寒假。3.3.G - Common Child (最大公共子序)
查看>>
设计模式学习笔记--原型模式
查看>>
.Net 通过MySQLDriverCS操作MySQL
查看>>
JS Cookie
查看>>
ubuntu Unable to locate package sysv-rc-conf
查看>>
笔记:认识.NET平台
查看>>