这也是网络流传的Microsoft的面试题目之一:“怎样从顶部开始逐层打印二叉树结点数据?请编程”。这个题目实际上很简单,采用队列的方式很容易可以实现:
void HiberarchyRetriveATree(TreeNode root,void (* visit)(TreeNode)) { queue<TreeNode> tree;
TreeNode tmp = NULL;
tree.push(root);
while (!tree.empty()) { tmp = tree.front();
tree.pop();
(*visit)(tmp);
if (tmp->_l != NULL) tree.push(tmp->_l);
if (tmp->_r != NULL) tree.push(tmp->_r); } } |
这里用到节点访问的策略,简单可以实现为:
void Visit(TreeNode node) { cout<<node->_value<<" "; } |