/*
@brief:思路说明
二叉树的非递归功能实现,核心在于模拟递归调用工作栈工作原理
按照一定规则入栈、出栈即可。
参考资料 严蔚敏版-数据结构-非递归先序遍历二叉树伪代码
希望大家看过代码后能够一起讨论交流、指出不足之处,非常感谢 :)
<span style="white-space:pre"> 时间复杂度:O(n)
<span style="white-space:pre"> </span>空间复杂度:O(n)
<span style="white-space:pre"> </span>n:二叉树节点个数</span>
*/
struct BiNode{
string s;
BiNode* lchild;
BiNode* rchild;
};
//获取当前栈空间栈顶节点
bool getTop(const stack<BiNode*>& stack, BiNode** node){
BiNode* curTop = stack.top();
if( curTop ){
*node = curTop;
return true;
}
return false;
}
//进栈
void Push(stack<BiNode*>& stack, BiNode** node, const string& str){
cout << "输入【" << str << "】子节点数据:" << endl;
string s;
getline(cin, s);