日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Boring Homework 二叉搜索树的打印,模拟

發布時間:2023/12/3 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Boring Homework 二叉搜索树的打印,模拟 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

寫了好長時間,注意遞歸的使用,思路一定要清晰。

還有注意的地方:打印的時候一定要先打印到緩存buffer中,然后再輸出到屏幕上面。

#include <bits/stdc++.h> using namespace std; int idx = 0; int val[100],lft[100],rgt[100]; int num[100][2]; int root; void insert(int &rt,int x){if(rt == 0) {rt = ++idx;val[rt] = x;}else{if(x > val[rt]) {insert(rgt[rt],x);num[rt][1]++;}else{insert(lft[rt],x);num[rt][0]++;}} } char buf[200][200]; int endpos[200]; int cnt = 0; int print(int rt,int beg,int &hd,int line){int f = 0;int sm1,sm2,end,endn = 0;if(lft[rt]){int hd1;sm1 = num[rt][0];print(lft[rt],beg,hd1,line+2);hd = sm1+beg;for(int i = beg;i <= hd;i++) buf[line][i] = buf[line+1][i] = ' ';buf[line+1][hd1] = '|';endn = hd1+1;buf[line][hd1] = '+';for(int i = hd1+1;i < hd;++i) buf[line][i] = '-';f = 1;}else{hd = beg;}buf[line][hd] = 'o';end = hd+1;if(rgt[rt]){int hd2 = 0;print(rgt[rt],hd+1,hd2,line+2);for(int i = hd;i < hd2;++i)buf[line+1][i] = ' ';buf[line+1][hd2] = '|';endn = hd2+1;buf[line][hd2] = '+';for(int i = hd+1;i < hd2;i++) buf[line][i] = '-';end = hd2+1;f = 1;}//buf[line+1][endn] = buf[line][end] = 0;endpos[line+1] = max(endpos[line+1],endn);endpos[line] = max(endpos[line],end);cnt = max(cnt,line+f); } int main(){int T,cas = 0;cin>>T;while(T--){idx = 0;cnt = 0;memset(num,0,sizeof(num));memset(lft,0,sizeof(lft));memset(rgt,0,sizeof(rgt));memset(val,0,sizeof(val));memset(endpos,0,sizeof(endpos));for(int i = 0;i < 200;++i) for(int j = 0;j < 200;j++) buf[i][j] = ' ';//memset(val,-1,sizeof(val));int n;scanf("%d",&n);root = 0;for(int i = 0;i < n;++i){int tmp;scanf("%d",&tmp);insert(root,tmp);}printf("Case #%d:\n",++cas);int hd;print(1,0,hd,0);for(int i = 0;i <= cnt;++i) buf[i][endpos[i]] = 0;for(int i = 0;i <= cnt;++i) puts(buf[i]);}return 0; } /* 100 3 1 3 2 */


總結

以上是生活随笔為你收集整理的Boring Homework 二叉搜索树的打印,模拟的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。