Print a binary tree in a pretty way

后端 未结 15 1307
我寻月下人不归
我寻月下人不归 2020-11-28 22:15

Just wondering if I can get some tips on printing a pretty binary tree in the form of:

5
     10
          11
          7
               6
     3
          4         


        
15条回答
  •  悲&欢浪女
    2020-11-28 22:40

    void btree::postorder(node* p, int indent)
    {
        if(p != NULL) {
            if(p->right) {
                postorder(p->right, indent+4);
            }
            if (indent) {
                std::cout << std::setw(indent) << ' ';
            }
            if (p->right) std::cout<<" /\n" << std::setw(indent) << ' ';
            std::cout<< p->key_value << "\n ";
            if(p->left) {
                std::cout << std::setw(indent) << ' ' <<" \\\n";
                postorder(p->left, indent+4);
            }
        }
    }
    

    With this tree:

    btree *mytree = new btree();
    mytree->insert(2);
    mytree->insert(1);
    mytree->insert(3);
    mytree->insert(7);
    mytree->insert(10);
    mytree->insert(2);
    mytree->insert(5);
    mytree->insert(8);
    mytree->insert(6);
    mytree->insert(4);
    mytree->postorder(mytree->root);
    

    Would lead to this result:

    enter image description here

提交回复
热议问题