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

从上往下打印二叉树

时间:2014-12-02 00:20:57      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:按层遍历   二叉树   

题目:从上而下打印出二叉树的每个节点,同一层的结点按照从左往右的顺序打印。二叉树结点定义如下:

struct BinaryTreeNode
{
    int m_nValue;
    BinaryTreeNode* m_pLeft;
    BinaryTreeNode* m_pRight;
}


分析:就是二叉树的按层遍历,即广度优先遍历。利用队列进行编程。每一次打印一个节点的时候,如果该节点有子节点,则把该节点的子节点放到一个队列的末尾。接下来到队列的头部去除最早放入队列的结点,重复前面的操作,直至队列中所有节点都被打印出来为止。

实现如下:

void PrintFromTopToBottom(BinaryTreeNode* pTreeRoot)
{
    if(!pTreeRoot)
        return;
        
    std::deque<BinaryTreeNode *>dequeTreeNode;
    
    dequeTreeNode.push_back(pTreeRoot);
    
    while(dequeTreeNode.size())
    {
        BinaryTreeNode *pNode=dequeTreeNode.front();
        dequeTreeNode.pop_front();
        printf("%d",pNode-m_nValue);
        if(pNode->m_pLeft)
            dequeTreeNode.push_back(pNode->m_pLeft);
        if(pNode->m_pRight)
            dequeTreeNode.push_back(pNode->mpRight);
    }
}


本文出自 “仙路千叠惊尘梦” 博客,请务必保留此出处http://secondscript.blog.51cto.com/9370042/1585197

从上往下打印二叉树

标签:按层遍历   二叉树   

原文地址:http://secondscript.blog.51cto.com/9370042/1585197

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