时间 2020-06-14 16:18
void bl(btree* head) { //传入根指针
if (!head) { //若根指针为空, 则 return
return;
}
stack<btree*> sta; //准备一个栈
//当根节点出栈时, 此时栈空, 但 head != NULL
while (!sta.empty() || head != NULL) {
if (head != NULL) { //若 head != NULL, 则 head 入栈
sta.push(head);
head = head->left; //先将所有的左子节点入栈
}
else { //若 head == NULL , 出栈, 再判断出栈节点是否存在右子节点
//若存在, 继续将所有左子节点入栈
head = sta.top();
printf("%d ", head->data);
sta.pop();
head = head->right;
}
}
}