如题:m, k 均从 0 开始计数。
#include<iostream>
using namespace std;
void print_level_node(BinTree root,int level,int num){
if(!root || level < 0 || k<0)
return;
queue<BinTree> que1,que2;
int cnt=m=k=tag=0;
TNode *tmp;
que1.enqueue(root);
while(m<level || k < num){
cnt = 0;
while(!que1.empty()){
tmp = que1.front();
que1.pop();
cnt++;
if(m==level && cnt == k)
tag = 1;
if(tmp->left)
que2.enqueue(tmp->left);
if(tmp->right)
que2.enqueue(tmp->right);
}
if(tag)
break;
m++;
cnt = 0 ;
while(!que2.empty()){
tmp = que2.front();
que2.pop();
cnt++;
if(m==level && cnt==k)
tag = 1;
if(tmp->left)
que1.enqueue(tmp->left);
if(tmp->right)
que1.enqueue(tmp->right);
}
m++;
}
}
本文介绍了一种二叉树的层级遍历算法,并通过双队列的方式实现了按指定层级和节点顺序打印二叉树节点的功能。该算法适用于需要按层级及特定节点顺序访问二叉树的应用场景。
679

被折叠的 条评论
为什么被折叠?



