【发布时间】:2020-04-15 09:53:19
【问题描述】:
输出给出 - 运行时错误 (SIGSEGV)。可能是什么问题?
问题:
给定一棵二叉树,按层次顺序打印树。 要打印具有数据 N 的节点,您需要遵循确切的格式 - N:L:x,R:y 其中,N 是二叉树中存在的任何节点的数据。 x 和 y 是节点 N 的左右子节点的值。打印 -1。如果任何孩子为空。 中间没有空隙。 您需要在不同的行中打印级别订单表单中的所有节点。 输入格式: 水平顺序形式的元素(以空格分隔) (如果任何节点没有左或右孩子,则取 -1 代替) 示例输入:
8 3 10 1 6 -1 14 -1 -1 4 7 13 -1 -1 -1 -1 -1 -1 -1
样本输出:
8:L:3,R:10 3:L:1,R:6 10:L:-1,R:14 1:L:-1,R:-1 6:L:4,R: 7 14:左:13,右:-1 4:L:-1,R:-1 7:L:-1,R:-1 13:L:-1,R:-1
代码如下:
// Following is the Binary Tree node structure
/**************
class BinaryTreeNode {
public :
T data;
BinaryTreeNode<T> *left;
BinaryTreeNode<T> *right;
BinaryTreeNode(T data) {
this -> data = data;
left = NULL;
right = NULL;
}
};
***************/
void printLevelWise(BinaryTreeNode<int> *root) {
if(root == NULL){
return;
}
cout << root->data << ":";
queue<BinaryTreeNode<int>*> pendingNodes;
pendingNodes.push(root);
while(pendingNodes.size() != NULL){
BinaryTreeNode<int>* front = pendingNodes.front();
pendingNodes.pop();
if(front->left->data != -1){
cout << "L:" << front->left->data << ",";
pendingNodes.push(front->left);
}
else if(front->left->data == -1){
cout << "L:" << "-1" << ",";
}
if(front->right->data != -1){
cout << "R:" << front->right->data;
pendingNodes.push(front->right);
}
else if(front->left->data == -1){
cout << "R:" << "-1";
}
cout << endl;
}
/* Don't write main().
* Don't read input, it is passed as function argument.
* Print output and don't return it.
* Taking input is handled automatically.
*/
}
【问题讨论】:
-
描述说“打印-1。如果任何孩子为空。”它没有说“打印-1。如果孩子的数据是-1。”
-
你能告诉我代码逻辑有什么问题吗?
标签: c++ data-structures binary-tree