码迷,mamicode.com
首页 > 其他好文 > 详细

层次打印二叉树

时间:2021-05-04 15:34:11      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:while   type   name   div   mamicode   pen   clear   oid   rgb   

#include<vector>
#include<queue>
#include<string>
#include<binaryNode.hpp>
#include<iostream>
#include<sstream>
template<typename T>
class traverse {
public:
    using D = T::value_type;
    void print_tree() {
        std::queue<binaryNode<D>*>q;
        q.push(tree.root());
        while (!q.empty())
        {
            std::vector<binaryNode<D>*>vec;
            while (!q.empty()) { vec.push_back(q.front()); q.pop(); }
            std::string line = "                        ";
            for (auto i : vec)
            {
                auto temp = i;
                if (temp)
                {
                    for (auto j = 0; j < inorder_vec.size(); ++j)
                    {
                        if (inorder_vec[j] == temp)
                        {
                            std::string str;
                            put << temp->data;
                            put >> str;
                            put.clear();
                            line.insert(j, str);
                            break;
                        }
                    }
                    if (temp->lson) q.push(temp->lson);
                    if (temp->rson) q.push(temp->rson);
                }
            }
            std::cout << line << std::endl;
        }


    }
    traverse(T& tree) :tree(tree)
    {
        inorder_traverse(tree.root());
    }
private:
    T &tree;
    std::stringstream put;
    std::queue<binaryNode<D>*> q;
    std::vector<binaryNode<D>*>inorder_vec;
    void inorder_traverse(binaryNode<D>* node)
    {
        if (!node)return;
        inorder_traverse(node->lson);
        inorder_vec.push_back(node);
        inorder_traverse(node->rson);
    }



};

技术图片

 

层次打印二叉树

标签:while   type   name   div   mamicode   pen   clear   oid   rgb   

原文地址:https://www.cnblogs.com/otakus/p/14725274.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!