//从上往下打印二叉树(层序遍历,广度优先遍历)
#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;
}
注意图的广度优先遍历
从上到下打印二叉树(层序遍历,广度优先遍历二叉树)
最新推荐文章于 2024-03-25 19:51:54 发布