标签:style blog class code java color
要求:从上往下打印二叉树的每个结点,同一层的结点按照从左到右的顺序打印。
算法思想:每一次打印一个结点的时候,如果该结点有子结点,则把该结点的子结点放到一个队列的末尾。接下来到队列的头部取出最早进入队列的结点,重复前面的打印操作,直到队列中所有的结点都被打印出来为止。
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 }
标签:style blog class code java color
原文地址:http://www.cnblogs.com/csxcode/p/3707833.html