typedef struct {
int data;
btNode* leftChild;
btNode* rightChild;
}btNode;
int firstVisit(btNode *p)
{
btNode* b;
b = p;
stack<btNode*> _stack;
while (!(b==nullptr&&_stack.empty))
{
while (b != NULL)
{
visit(b->data);
b = b->leftChild;
_stack.push(b);
}
//可能左右都为空,把根节点出栈了,这时候就为空了
if (_stack.empty) return 0;
else
{
//因为只剩下右子节点,现在这个栈顶元素已经没有用了,直接出栈
b = _stack.top();
_stack.pop();
b = b->rightChild;
}
}
return 0;
}