【发布时间】:2020-03-06 12:27:36
【问题描述】:
我正在尝试使用堆栈遍历二叉树,遍历成功但最后的程序显示垃圾值和分段错误错误。我认为它不会一次又一次地达到顶峰,但我无法解决这个问题。
struct Node
{
int data;
Node *left;
Node *right;
Node(int x)
{
data = x;
left = NULL;
right = NULL;
}
};
Node *STACK[10] = { NULL };
int TOP = -1;
void push(Node *ptr)
{
if(TOP < 10) {
STACK[++TOP] = ptr;
}
}
void stackTraversal(Node *root)
{
Node *ptr = root; bool flag = false;
top:
while(ptr != NULL)
{
push(ptr);
ptr = ptr->left;
}
ptr = STACK[TOP];
TOP--;
while(ptr != NULL)
{
cout << ptr->data << " ";
if(ptr->right != NULL)
{
ptr = ptr->right;
flag = true;
break;
}
ptr = STACK[TOP];
TOP--;
}
if(flag)
goto top;
cout << "\nTHE END\n";
}
int main(int argc, char const *argv[])
{
Node *R = new Node(2);
Node *a = new Node(0);
Node *b = new Node(1);
Node *c = new Node(4);
Node *d = new Node(5);
Node *e = new Node(3);
R->right = c;
R->left = a;
a->right = b;
c->right = d;
c->left = e;
stackTraversal(R);
cout << endl;
return 0;
}
它给出以下输出。
输出:- 0 1 2 3 4 5 -786491 分段错误(核心转储)
【问题讨论】:
标签: c++ segmentation-fault stack binary-tree garbage