首页 > 代码库 > 从上往下打印二叉树
从上往下打印二叉树
要求:从上往下打印二叉树的每个结点,同一层的结点按照从左到右的顺序打印。
算法思想:每一次打印一个结点的时候,如果该结点有子结点,则把该结点的子结点放到一个队列的末尾。接下来到队列的头部取出最早进入队列的结点,重复前面的打印操作,直到队列中所有的结点都被打印出来为止。
1 struct BinaryTreeNode //节点 2 { 3 int m_nValue; 4 BinaryTreeNode* m_pLeft; 5 BinaryTreeNode* m_pRight; 6 };
1 //////////////从上往下打印二叉树///////////////////////// 2 void PrintFromTopToBottom(BinaryTreeNode* pTreeRoot) 3 { 4 if (pTreeRoot == NULL) 5 { 6 return; 7 } 8 list<BinaryTreeNode*> NodeData; 9 NodeData.push_back(pTreeRoot); 10 BinaryTreeNode* pTemp = 0 ; 11 while (!NodeData.empty()) 12 { 13 pTemp = NodeData.front(); 14 NodeData.pop_front(); 15 cout<<pTemp->m_nValue<<endl; 16 if (pTemp->m_pLeft) 17 { 18 NodeData.push_back(pTemp->m_pLeft); 19 } 20 if (pTemp->m_pRight) 21 { 22 NodeData.push_back(pTemp->m_pRight); 23 } 24 } 25 26 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。