现在的位置: 首页 > 综合 > 正文

如何从顶层开始逐层打印二叉树

2013年02月07日 ⁄ 综合 ⁄ 共 551字 ⁄ 字号 评论关闭

层次遍历二叉树。
大致算法
采用一个队列q,先将二叉树根结点入队列,然后退队列,输出该结点;若它有左子树,便将左子树根结点入队列;若它有右子树,便将右子树根结点入队列,如此直到队列空为止。

 

 采用队列的方式:

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<<" ";
}

抱歉!评论已关闭.