博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
控制台打印二叉树
阅读量:7095 次
发布时间:2019-06-28

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

#include
#include
#include
#include
#include
#include
#include
#include
#define N 100#define MAXN 0x3f3f3f3fusing namespace std;struct TreeNode{ TreeNode* child[2]; int val; int d;//距离屏幕左端的宽度 TreeNode(){ child[0] = child[1] = NULL; }};int width;int step = 4;void buildT(TreeNode* &t){ int val; cin>>val; if(val == -1){ t = NULL; return; } t = new TreeNode(); t->val = val; buildT(t->child[0]); buildT(t->child[1]);}void widthT(TreeNode* t){ if(!t) return; widthT(t->child[0]); t->d = width; width+=step; widthT(t->child[1]);}void outT(TreeNode* t){ width=0; widthT(t); queue
q; vector
v; q.push(t); int n=1;//当前层的节点个数 int nn=0;//统计下一次的节点的个数 int pred;//前一个节点距离左屏幕的距离 while(!q.empty()){ TreeNode* tt = q.front(); q.pop(); v.push_back(tt); //放入孩子节点 if(tt->child[0]) q.push(tt->child[0]), ++nn; if(tt->child[1]) q.push(tt->child[1]), ++nn; if(v.size()==n){ //上一层访问完毕 n = nn; nn = 0; /***************************************/ //打印节点的数值 int pred = -1;//前面的节点距离屏幕左端的距离 for(int i=0; i
d)<<""; cout<
val; pred = x->d; } else { cout<
d-pred)<
val; pred = x->d; } } cout<
child[0]) ld = x->child[0]->d; if(x->child[1]) rd = x->child[1]->d; if(ld != -1) { if(pred==-1){ //打印左孩子的分枝图案 cout<
<<""; } else { cout<
<<""; } for(int j=0; j
d-ld; ++j) cout<<"-"; cout<<"-"; } else { if(pred==-1){ cout<
d)<<""; } else { cout<
d-pred-1)<<""; } cout<<"-"; } pred = x->d; if(rd != -1){ //打印右孩子的分枝图案 for(int j=0; j
d; ++j) cout<<"-"; pred = rd; } } cout<
child[0]) ld = x->child[0]->d; if(x->child[1]) rd = x->child[1]->d; if(ld != -1) { if(pred==-1){ cout<
<<""; } else { cout<
<<""; } cout<<"|"; for(int j=0; j
d-ld; ++j) cout<<" "; } else { if(pred==-1){ cout<
d)<<""; } else { cout<
d-pred-1)<<""; } cout<<" "; } pred = x->d; if(rd != -1){ for(int j=0; j
d-1; ++j) cout<<" "; cout<<"|"; pred = rd; } } cout<

 

转载地址:http://gbaql.baihongyu.com/

你可能感兴趣的文章
使用Unity for IOS 集成 Cardboard教程
查看>>
EXCEL单元格不能填充颜色的解决方法
查看>>
centos 无人值守安装liunx系统
查看>>
非生产环境账号权限一例
查看>>
对别人无形中的伤害会让你很受伤
查看>>
查看Apache并发请求数及其TCP连接状态解释 [转载--张宴]
查看>>
apache+svn服务搭建
查看>>
自定义tabBar中间的添加按钮
查看>>
docker php-fpm默认镜像安装 php扩展
查看>>
pdf首页封面的抓取
查看>>
记一次windows 2003被黑
查看>>
samba配置文件
查看>>
Android 里的各种通信方式(四)
查看>>
从用户的视角看待网页设计(四)
查看>>
实验室系统扫描录样需求
查看>>
私有git 搭建
查看>>
tensorflow 基础学习
查看>>
基于ssm的开发 项目持续开发中
查看>>
springboot添加支持jsp
查看>>
WPF界面控件Essential Studio for WPF发布2017 v4版本
查看>>