k_eckelhttp://www.mscenter.edu.cn/blog/k_eckel & http://k-eckel.cnblogs.com

这也是网络流传的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<<" ";

}

Posted on 2005-07-22 13:28  k_eckel's mindview  阅读(6673)  评论(10)    收藏  举报