/////////////////////////////////////////////////////////////////////////////////////
// 5. 题目23 从上往下打印二叉树
void PrintTreeFromTopToBottom(BinarySeachTreeNode<int>* pRoot) { if (NULL == pRoot) { return; } queue<BinarySeachTreeNode<int>*> stQueue; stQueue.push(pRoot); while (!stQueue.empty()) { BinarySeachTreeNode<int>* pTmpNode = stQueue.front(); stQueue.pop(); // 打印数据 printf("%2d -> ", pTmpNode->m_stValue); if (pTmpNode->m_pLeftNode) { stQueue.push(pTmpNode->m_pLeftNode); } if (pTmpNode->m_pRightNode) { stQueue.push(pTmpNode->m_pRightNode); } } putchar(10); } void PrintTreeFromTopToBottomTestFunc() { cout << "\n\n --------------- PrintTreeFromTopToBottomTestFunc Start -------------->" << endl; int aiArray[] = {8, 6, 10, 5, 7, 9, 11, 12}; int iLen = sizeof(aiArray) / sizeof(int); TRAVERSAL_ARRAY(aiArray, iLen); // 1.建立一个二叉树 CBinarySearchTree<int>* pTree = new CBinarySearchTree<int>(); if (NULL == pTree) { return; } for (int i = 0; i < iLen; i++) { pTree->Insert(aiArray[i]); } pTree->Traversal(); pTree->Traversal(TRAVERSAL_TYPE_RECUR_PRE_ORDER); // 2.二叉树层次遍历(广度优先遍历) const BinarySeachTreeNode<int>* pRoot = pTree->GetTreeRootNode(); cout << "非递归 层次遍历: "; PrintTreeFromTopToBottom(const_cast<BinarySeachTreeNode<int>*>(pRoot)); // 3.释放内存 SAVE_DELETE(pTree); cout << "\n\n --------------- PrintTreeFromTopToBottomTestFunc Start -------------->" << endl; }