user-0 提问: 求解 在dos框画出一个树的图？的方法

回复:
user: user-1
content: 用EasyX画图可以精确到像素点，而在文本模式下用字符画图，容易对不准不好控制。 EasyX自带有完整的手册，兼容Turbo C的BGI绘图接口函数。

user: user-2
content: 可以用中序遍历，输出命令行tree的那种效果

user: user-0
content: 是 树 不是数 抱歉

user: user-1
content: EasyX。很多年前用Turbo C画过，很简陋。

user: user-3
content: 仅供参考：#pragma comment(lib,"user32") #pragma comment(lib,"gdi32") #include <stdio.h> #include <stdlib.h> #include <windows.h> HWND WINAPI GetConsoleWindow(); void HideTheCursor() {     CONSOLE_CURSOR_INFO cciCursor;     HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);      if(GetConsoleCursorInfo(hStdOut, &cciCursor)) {         cciCursor.bVisible = FALSE;         SetConsoleCursorInfo(hStdOut, &cciCursor);     } } void ShowTheCursor() {     CONSOLE_CURSOR_INFO cciCursor;     HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);      if(GetConsoleCursorInfo(hStdOut, &cciCursor)) {         cciCursor.bVisible = TRUE;         SetConsoleCursorInfo(hStdOut, &cciCursor);     } } int main() {     HWND  hwnd;     HDC   hdc;     HFONT hfont;      system("color F0");     system("cls");     HideTheCursor();     hwnd  = GetConsoleWindow();     hdc   = GetDC(hwnd);     hfont = CreateFont(48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "华文楷体");     SelectObject(hdc,hfont);     TextOut(hdc,10,10,"地球人都知道！",14);     MoveToEx(hdc,5,5,NULL);     LineTo(hdc,300,  5);     LineTo(hdc,300, 60);     LineTo(hdc,  5, 60);     LineTo(hdc,  5,  5);     DeleteObject(hfont);     ReleaseDC(hwnd,hdc);     getchar();     system("color 07");     system("cls");     ShowTheCursor();     return 0; }

user: user-2
content: 献上程序，希望对楼主有帮助。 #include<iostream> #include<string> #include<cstdlib> #define N 100 using namespace std;  string replace(string &s){     string ss;     for(int i=0;i<s.size();i++){         if(s[i]!='|')ss.append(".");         else ss.append("|");     }     return ss; }  class Node{ public:     int  value;     Node *left;     Node *right;     string s;//该节点对应的一行字符串     int   n;//0、1、2分别代表根节点、左孩子、右孩子      Node(int value=0,int n=0){         this->value=value;         this->n=n;         this->left=NULL;         this->right=NULL;         this->s.append(itoa(value,new char[10],10));     }     void addNode(int value=0){         //保证有孩子的节点对应的字符串末尾有"-|"         if('|'!=s[s.size()-1])s.append("-|");         string ss;         int index;         //判断新节点添加到那一边         if(value<=this->value){             //若没有左孩子,则添加为该节点的左孩子             if(NULL==this->left){                 left=new Node(value,1);                 //新节点是父节点的左孩子，这时如果父节点也是其上一层节点的左孩子，那么把前面的都换成点，否则只把前面的数字换成点                 if(1==this->n){                     ss=replace(s).substr(0,s.size()-1);                     index=ss.rfind("|");                     if(index!=string::npos)ss=ss.substr(0,index)+"."+ss.substr(index+1);                     ss.append("|-");                 }else{                     ss=replace(s)+"-";                 }                 left->s.insert(0,ss);             }else{                 this->left->addNode(value);             }         }else{             //此处同上             if(NULL==this->right){                 right=new Node(value,2);                 if(2==this->n){                     ss=replace(s).substr(0,s.size()-1);                     index=ss.rfind("|");                     if(index!=string::npos)ss=ss.substr(0,index)+"."+ss.substr(index+1);                     ss.append("|-");                 }else{                     ss=replace(s)+"-";                 }                 right->s.insert(0,ss);             }else{                 right->addNode(value);             }         }     }     void print(){         if(NULL!=this->right)this->right->print();          cout<<s<<endl;          if(NULL!=this->left)this->left->print();     } }; int main(){     int n[N],len=0;      freopen("data.in","r",stdin);     while(cin>>n[len++]);     len--;      Node node(n[0]);     for(int i=1;i<len;i++){         node.addNode(n[i]);     }     node.print();      return 0; }

user: user-2
content: 请看图片，此程序读取输入的数字，将以第一个数字作为树根，后面的每一个数字按照比自己小的放在左边，比自己大的放在右边的规则，打印出树结构

user: user-4
content: https://www.baidu.com/s?wd=%E6%8E%A7%E5%88%B6%E5%8F%B0%20%E7%BB%98%E5%9B%BE&rsv_spt=1&rsv_iqid=0xf3a1a91c00010157&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&inputT=1311&rsv_t=42566jz78GhHu0id9TRimRoyfmXXXnJ6b6mhQOX7N94N89V6DNGhoecjP1IxbEIUt%2Bpz&oq=%E6%8E%A7%E5%88%B6%E5%8F%B0%20%E7%BB%99%E5%8A%9B&rsv_pq=9ea89bb30001250f&rsv_sug3=8&rsv_sug1=5&rsv_sug2=0&rsv_sug7=100&rsv_sug4=1436&rsv_sug=1