Pretty print binary tree

来源:互联网 发布:arm单片机型号 编辑:程序博客网 时间:2024/05/16 11:32

http://articles.leetcode.com/2010/09/how-to-pretty-print-binary-tree.html

简化版本的C++

const int box_size = 3;std::queue q;q.push(m_root);size_t current_level_nodes = 1;size_t next_current_level_nodes = 0;size_t level = 1;int padding = box_size * (std::pow(2, Height() - level) - 1);std::cout << std::setw(padding / 2) << "";while (level <= Height()){std::cout << std::setw(box_size);if (q.front() != NULL){std::cout <<q>get_val();q.push(q.front()->get_left());q.push(q.front()->get_right());}else{std::cout << "";q.push(NULL);q.push(NULL);}next_current_level_nodes += 2;std::cout << std::setw(padding) << "";q.pop();--current_level_nodes;if (current_level_nodes == 0){current_level_nodes = next_current_level_nodes;next_current_level_nodes = 0;++level;padding = box_size * (std::pow(2, Height() - level) - 1);std::cout << "\n" << std::setw(padding / 2) << "";}}


0 0
原创粉丝点击