【问题标题】:binary tree level wise print function not working [closed]二叉树级打印功能不起作用[关闭]
【发布时间】:2017-12-02 15:52:57
【问题描述】:

我需要创建一个函数来打印水平二叉树及其子节点,例如输入是根中的 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;
}

}

【问题讨论】:

    标签: c++ class tree queue binary-tree


    【解决方案1】:

    你在迭代中改变你的根? 每次检查节点时都应该从根目录下。 如果不是 - 为什么大小应该为 0? 你可以用递归的方式来做。那可能是您的最佳解决方案。

    【讨论】:

    • OP 如何理解这一点(甚至接受它作为答案)对我来说永远是个谜。
    • 他一直在检查 if 语句中的相同内容。我同意我没有用太多信息写它,但显然它与这样一个事实有关,如果你继续检查同样的事情并将 q 的大小加 1。你将得到一个无限循环(假设根在他的左边有 1 个节点,你总是会得到真实的) - 也许它会解决你的神秘事物(:
    • 在弹出元素后,我应该在我没有替换的所有下一行中将 root 替换为前面,因此得到了我的答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多