有上往下打印二叉树

题目其实就是按层遍历二叉树。

可以运用队列来实现。

如果一个节点有子节点那么就把子节点放入队列的末尾,接下来从队列的头部取出最早进入队列的节点。

void PrintFromTopToBottom(BinaryTreeNode* pTreeRoot)
{
    if( pTreeRoot == NULL)
        return;

    std::deque<BinaryTreeNode*> dequeTreeNode ;

    dequeTreeNode.push_back(pTreeRoot);

    while( dequeTreeNode.size())
    {
        BinaryTreeNode* pNode = dequeTreeNode.front();//取第一个元素;
        dequeTreeNode.pop_front();//弹出第一个元素

        cout<< pNode->value<<endl;
        if( pNode->p_left)
            dequeTreeNode.push_back(pNode->p_left);
        if( pNode->p_right)
            dequeTreeNode.push_back(pNode->p_right);
    }

}

 

 

posted @ 2013-03-04 15:03  没离开过  阅读(75)  评论(0)    收藏  举报