1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| #include <iostream> #include <string>
using namespace std;
struct Tree{ int data; Tree* left; Tree* right; Tree(int data, Tree* l = nullptr, Tree* r = nullptr):data(data), left(l), right(r){} void set(Tree* l, Tree* r){ left = l; right = r; } };
void printTreeNodes(Tree* root, string prefix, string endpoint);
void printTree(Tree* root){ if (root==nullptr) { return;} cout<<root->data<<endl;
string endpointForLeft = (root->right) ? "├──" : "└──";
printTreeNodes(root->left, "", endpointForLeft); printTreeNodes(root->right, "", "└──"); }
void printTreeNodes(Tree* root, string prefix, string endpoint){ if (root==nullptr) { return; }
cout<<prefix<<endpoint<<root->data<<endl;
string endpointForLeft = (root->right) ? "├──" : "└──"; string prefixExtra = (endpoint == "└──") ? " " :"│ ";
printTreeNodes(root->left, prefix+prefixExtra, endpointForLeft); printTreeNodes(root->right, prefix+prefixExtra, "└──"); }
int main() { Tree left(1); Tree right(2); Tree root(0, &left, &right); Tree l4(3); Tree l5(4); left.set(&l4, &l5); Tree l6(5); Tree l7(6); right.set(&l6, &l7); Tree l8(7); Tree l9(8); Tree l10(9); l8.set(&l9, &l10); l4.left = &l8;
printTree(&root); }
|