美文网首页
树的非递归遍历——前序

树的非递归遍历——前序

作者: eesly_yuan | 来源:发表于2014-10-08 16:17 被阅读68次

非递归调用一般需要额外的栈辅助,具体实现为
1、先入根节点
2、访问top,pop
3、入当前节点的右节点
4、入当前节点的左节点
5、循环2-4

//前序遍历
void preorder(Node *root)
{
    if (root==NULL)
        return;
    cout<<root->val<<" ";
    preorder(root->left);
    preorder(root->right);
}
//前序非递归实现,实现原理,先访问,右入栈,左入栈
void preorderloop(Node *root)
{
    if (root == NULL)
        return;
    stack<Node *> sn;
    sn.push(root);
    while(sn.size())
    {
        Node *p = sn.top();
        sn.pop();
        cout<<p->val<<" ";
        if (p->right)
            sn.push(p->right);
        if (p->left)
            sn.push(p->left);
    }
}

相关文章

  • 树的遍历算法

    树的递归遍历 树的层次遍历 树的非递归前序遍历 树的非递归中序遍历

  • 二叉树遍历java,非递归、层次。

    /** * 前序遍历 * 递归 */ /*** 前序遍历* 非递归*/ 后续遍历非递归 二叉树层次遍历基于java...

  • 二叉树遍历

    二叉树的遍历 1. 前序遍历 1.1 递归前序遍历 1.2 非递归前序遍历 2 中序遍历 2.1递归遍历 2.2非...

  • 二叉树递归非递归遍历算法整理

    一、二叉树前序遍历 1 前序递归遍历 2.前序非递归遍历 一、二叉树中序遍历 2.中序递归遍历 1.中序非递归遍历...

  • 二叉树遍历-JAVA实现

    基础二叉树 二叉树遍历分为前序、中序、后序递归和非递归遍历、还有层序遍历。 前序递归遍历算法:访问根结点-->递归...

  • goLang 二叉树遍历(递归 非递归 前序遍历 中序遍历 后序

    goLang 二叉树遍历(递归 非递归 前序遍历 中序遍历 后序遍历 层序遍历) 前序遍历 中序遍历 后序遍历 代...

  • 二叉树遍历

    请递归,非递归方式分别前序遍历,中序遍历,后续遍历二叉树

  • 二叉树的遍历

    非递归前序遍历 非递归中序遍历 非递归后序遍历 层序遍历

  • 总结

    1、二叉树广度遍历(非递归) 广度遍历非递归实现需要依靠一个队列。 2、二叉树深度遍历(递归与非递归,前序,中序和...

  • 二叉树的相关操作(一)

    上次写了二叉树遍历,其中在非递归的遍历中,只写了前序遍历,没有写非递归中序遍历和后续遍历。非递归要用到栈,只要根据...

网友评论

      本文标题:树的非递归遍历——前序

      本文链接:https://www.haomeiwen.com/subject/uifptttx.html