有上往下打印二叉树
题目其实就是按层遍历二叉树。
可以运用队列来实现。
如果一个节点有子节点那么就把子节点放入队列的末尾,接下来从队列的头部取出最早进入队列的节点。
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); } }

浙公网安备 33010602011771号