题目:从上往下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。
分析:其实就是按层的遍历方式
/* 剑指offer面试题23 */ #include <iostream> #include <deque> using namespace std; struct BinaryTree{ int data; BinaryTree* lchild; BinaryTree* rchild; }; void PrintLeverTree(BinaryTree* root){ if(root == NULL){ return; } deque<BinaryTree* > prioriDeque; prioriDeque.push_back(root); while(prioriDeque.size()){ BinaryTree* pNode = prioriDeque.front(); prioriDeque.pop_front(); cout << pNode->data << " "; if(pNode->lchild){ prioriDeque.push_back(pNode->lchild); } if(pNode->rchild){ prioriDeque.push_back(pNode->rchild); } } } BinaryTree* Create(){ BinaryTree* root = new BinaryTree; root->data = 8; BinaryTree* lchild = new BinaryTree; lchild->data = 6; BinaryTree* rchild = new BinaryTree; rchild->data = 10; root->lchild = lchild; root->rchild = rchild; BinaryTree* lchild1 = new BinaryTree; lchild1->data = 5; BinaryTree* rchild1 = new BinaryTree; rchild1->data = 7; lchild->lchild = lchild1; lchild->rchild = rchild1; BinaryTree* lchild2 = new BinaryTree; lchild2->data = 9; BinaryTree* rchild2 = new BinaryTree; rchild2->data = 11; rchild->lchild = lchild2; rchild->rchild = rchild2; return root; } int main() { BinaryTree* root = Create(); PrintLeverTree(root); return 0; }