美文网首页
二叉树的先序、中序、后序非递归遍历

二叉树的先序、中序、后序非递归遍历

作者: 稀饭粥95 | 来源:发表于2018-08-30 00:42 被阅读5次

先序

 /**
     * 前序遍历
     * 非递归
*/
public void preOrder1(BinaryNode<AnyType> Node)
{
        Stack<BinaryNode> stack = new Stack<>();
        while(Node != null || !stack.empty())
        {
            while(Node != null)
            {
                System.out.print(Node.element + "   ");
                stack.push(Node);
                Node = Node.left;
            }
            if(!stack.empty())
            {
                Node = stack.pop();
                Node = Node.right;
            }
        }
}

中序

/**
 * 中序遍历
 * 非递归
*/
public void midOrder1(BinaryNode<AnyType> Node)
{
    Stack<BinaryNode> stack = new Stack<>();
    while(Node != null || !stack.empty())
    {
        while (Node != null)
        {
            stack.push(Node);
            Node = Node.left;
        }
        if(!stack.empty())
        {
            Node = stack.pop();
            System.out.print(Node.element + "   ");
            Node = Node.right;
        }
    }
}

后序

/**
 * 后序遍历
 * 非递归
 */
public void posOrder1(BinaryNode<AnyType> Node)
{
    Stack<BinaryNode> stack1 = new Stack<>();
    Stack<Integer> stack2 = new Stack<>();
    int i = 1;
    while(Node != null || !stack1.empty())
    {
        while (Node != null)
        {
            stack1.push(Node);
            stack2.push(0);
            Node = Node.left;
        }

        while(!stack1.empty() && stack2.peek() == i)
        {
            stack2.pop();
            System.out.print(stack1.pop().element + "   ");
        }

        if(!stack1.empty())
        {
            stack2.pop();
            stack2.push(1);
            Node = stack1.peek();
            Node = Node.right;
        }
    }
}

相关文章

  • 树的遍历,golang实现

    先序,递归 中序,递归 后序,递归 先序,非递归 中序,非递归 后序,非递归 层序遍历

  • 二叉树的遍历算法

    递归版本 先序遍历: 中序遍历: 后序遍历: 非递归版本 先序遍历: 中序遍历: 后序遍历: 层次遍历:

  • 二叉树的操作

    /*主要内容:1、实现二叉树的先序、中序、后序遍历,包括递归方式和非递归方式*/ 实现二叉树的先序、中序、后序遍历...

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

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

  • 二叉树遍历

    先序遍历——[递归、非递归] 中序遍历——[递归、非递归] 后序遍历——[递归、非递归] 层次遍历——[递归、非递归]

  • 二叉树先序、中序、后序遍历 递归与非递归 Python实现 1.先序遍历:根节点->左子树->右子树 2.中序遍历...

  • 二叉树的遍历

    先序递归: 非递归: 中序递归: 非递归: 后序递归: 非递归 层次遍历

  • 树的遍历

    节点结构: 先序遍历 递归 非递归 后序遍历 递归 非递归 中序遍历 递归 非递归 层序遍历 类库 有了上述遍历算...

  • 算法之二叉树

    二叉树之C++实现 创建二叉树 复制二叉树 先序遍历 递归实现 非递归实现 中序遍历 递归实现 非递归实现 后序遍...

  • 二叉树先序、 中序, 后序遍历的非递归,非递归实现

    递归版的先序,中序,后序 非递归版的遍历

网友评论

      本文标题:二叉树的先序、中序、后序非递归遍历

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