1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | #include<iostream> #include<queue> using namespace std; struct Node { int data; //节点中的数据 Node* lChild; //左子指针 Node* rChild; //右子指针 }; void PrintNodeByLevel(Node* root) //root,二叉树的根节点 { int cur=0,last=0,count=0; //cur记录当前处理队列中的第几个元素,last记录当前处理行中最后一个元素是第几个要被遍历的元素,count记录当前队列中共有多少元素 queue<Node*> q; Node* r=root; q.push(r); last++; count++; while (!q.empty()) { Node* temp=q.front(); if (temp->lChild!=NULL) { q.push(temp->lChild); count++; } if (temp->rChild!=NULL) { q.push(temp->rChild); count++; } q.pop(); cout<<temp->data<< " " ; cur++; if (cur==last) { cout<<endl; last=count; } } } int main() { Node* r= new Node(); r->data=1; r->lChild=NULL; r->rChild=NULL; Node* p= new Node(); p->data=2; p->lChild=NULL; p->rChild=NULL; Node* q= new Node(); q->data=3; q->lChild=NULL; q->rChild=NULL; r->lChild=p; r->rChild=q; Node* s= new Node(); s->data=4; s->lChild=NULL; s->rChild=NULL; Node* h= new Node(); h->data=5; h->lChild=NULL; h->rChild=NULL; p->lChild=s; p->rChild=h; Node* c= new Node(); c->data=6; c->lChild=NULL; c->rChild=NULL; q->rChild=c; Node* d= new Node(); d->data=7; d->lChild=NULL; d->rChild=NULL; Node* f= new Node(); f->data=8; f->lChild=NULL; f->rChild=NULL; h->lChild=d; h->rChild=f; PrintNodeByLevel(r); system ( "pause" ); return 0; } |
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步