二叉树中序遍历
C++二叉树中序遍历基本思想
申请一个栈stk,再申请一个变量cur,初始值让它等于头节点
先把cur压入栈中对cur节点的整颗子树来说,依次把左边界压入栈中,不断重复直到cur为空
从stk弹出一个节点记作node,打印node的值,并让cur=node.right。重复第二个步骤,当stk为空并且cur为空时,结束循环。
C++二叉树中序遍历代码
//递归写法
void inorderSortCure(TreeNode* root)
{
if(root!=NULL)
{
inorderSortCure(root->left);
cout<<root->val<<" ";
inorderSortCure(root->right);
}
}
//非递归写法
void inorderSort(TreeNode* root)
{
stack<TreeNode*> stk;
TreeNode* cur = root;
while(!stk.empty()||cur)
{
while(cur)
{
stk.push(cur);
cur=cur->left;
}
TreeNode* node = stk.top();
stk.pop();
cout<<node->val<<" ";
cur= node->right;
}
}