//从上往下打印二叉树(层序遍历,广度优先遍历) #include<stdio.h> #include<queue> using namespace std; struct BinaryTreeNode { int m_nValue; BinaryTreeNode* m_pLef; BinaryTreeNode* m_pRight; }; BinaryTreeNode* createBinaryTreeNode(int value) { BinaryTreeNode* pNode = new BinaryTreeNode(); pNode->m_nValue = value; pNode->m_pLef = NULL; pNode->m_pRight = NULL; return pNode; } void connectBinaryTreeNode(BinaryTreeNode* pParent, BinaryTreeNode* pLeftChild, BinaryTreeNode* pRightChild) { if(!pParent || !pLeftChild || !pRightChild) return; pParent->m_pLef = pLeftChild; pParent->m_pRight = pRightChild; } void printTreeFromTopToBottom(BinaryTreeNode* pRoot) { if(pRoot == NULL) return; queue<BinaryTreeNode*> btnQueue; btnQueue.push(pRoot); while(!btnQueue.empty()) { BinaryTreeNode* pTemp = btnQueue.front(); btnQueue.pop(); printf("%d\t",pTemp->m_nValue); if(pTemp->m_pLef) btnQueue.push(pTemp->m_pLef); if(pTemp->m_pRight) btnQueue.push(pTemp->m_pRight); } } void test() { BinaryTreeNode* pNode1 = createBinaryTreeNode(8); BinaryTreeNode* pNode2 = createBinaryTreeNode(6); BinaryTreeNode* pNode3 = createBinaryTreeNode(10); BinaryTreeNode* pNode4 = createBinaryTreeNode(5); BinaryTreeNode* pNode5 = createBinaryTreeNode(7); BinaryTreeNode* pNode6 = createBinaryTreeNode(9); BinaryTreeNode* pNode7 = createBinaryTreeNode(11); connectBinaryTreeNode(pNode1,pNode2,pNode3); connectBinaryTreeNode(pNode2,pNode4,pNode5); connectBinaryTreeNode(pNode3,pNode6,pNode7); printTreeFromTopToBottom(pNode1); } int main() { test(); return 0; }注意图的广度优先遍历
从上到下打印二叉树(层序遍历,广度优先遍历二叉树),布布扣,bubuko.com
原文:http://blog.csdn.net/walkerkalr/article/details/21109933