题目:输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。
例如输入
8
/ \
6 10
/\ /\
5 7 9 11
输出8 6 10 5 7 9 11。
#include <iostream> #include <deque> using namespace std; struct tree { int value; tree *left; tree *right; }; void addTree(tree *&ptr,int value) { if (ptr==nullptr) { tree *currentptr=new tree(); currentptr->value=value; currentptr->left=nullptr; currentptr->right=nullptr; ptr=currentptr; } else { if (ptr->value>value) { addTree(ptr->left,value); } else { addTree(ptr->right,value); } } } void outtree(tree *ptr) { if (ptr==nullptr) { return; } deque<tree *> ktree; ktree.push_back(ptr); while (!ktree.empty()) { tree *node=ktree.front(); ktree.pop_front(); cout<<node->value<<endl; if (node->left) { ktree.push_back(node->left); } if (node->right) { ktree.push_back(node->right); } } } int main() { tree *root=nullptr; addTree(root,8); addTree(root,10); addTree(root,6); addTree(root,9); addTree(root,11); addTree(root,5); addTree(root,7); outtree(root); return 0; }