剑指offer - 从上往下遍历二叉树

来源:互联网 发布:pxe网络启动winpe 编辑:程序博客网 时间:2024/05/20 10:23

二叉树结点定义如下:

struct  BinaryTreeNode{int  value;BinaryTreeNode *pLeft;BinaryTreeNode *pRight;};

分析:按层打印的顺序决定了我们应该先打印根节点,之后为了打印根节点的左右结点,我们需要把这两个子结点保存到一个queue的容器中。之后读取左结点,把它打印出来后,若它包含孩子结点,则还是按照顺序将它的孩子结点保存到队列的末尾。最后到队列的头部取出最早进入队列的结点,重复前面的打印操作,直至队列中所有的结点都被打印为止。


代码实现:

void printFromTopToBottom( BInaryTreeNode *root){ if( !root ) return; std::queue<BinaryTreeNode *> dequeTreeNode; dequeTreeNode.push_back(root); while( dequeTreeNode.size() ){ BinaryTreeNode *Node = dequeTreeNode.front(); dequeTreeNode.pop_front(); printf("%d", Node->value ); if( Node->pLeft ) dequeTreeNode.push_back( Node->pLeft ); if( Node->pRight ) dequeTreeNode.push_back( Node->pRight ); }}



0 0
原创粉丝点击