我需要创建一个打印级别二进制树及其子节点的函数,例如输入在根中为1,其中2个子节点为10,右边为12 然后输出将像 - 1:L:10,R:12(然后是endl)2:L:-1,R:-1(然后是endl)3:L:-1,R:-1等等等等我不知道为什么我的代码运行无限次,从而给出时间限制超过错误 如果有人可以看看
#include<queue>
void printLevelWise(BinaryTreeNode<int> *root) {
if(root==NULL) return;
queue<BinaryTreeNode<int>*>q;
q.push(root);
while(q.size()!=0){
BinaryTreeNode<int> *front=q.front();
cout<<front->data<<":";
q.pop();
if(root->left!=NULL) {
cout<<"L:"<<root->left->data;
q.push(root->left);
}
else{
cout<<"L:-1";
}
if(root->right!=NULL){
cout<<",R:"<<root->right->data;
q.push(root->right);
}
else{
cout<<",R:-1";
}
cout<<endl;
}
}
答案 0 :(得分:0)
在迭代中更改root的位置? 每次检查节点时都应该在根目录下。 如果不是 - 为什么尺寸永远不会是0? 您可以以递归方式执行此操作。多数民众赞成可能是最好的解决方案。