美文网首页程序员
二叉树的非递归遍历二(中序/JAVA)

二叉树的非递归遍历二(中序/JAVA)

作者: 林天涯 | 来源:发表于2017-12-31 15:16 被阅读0次

思路


与先序非递归遍历非常类似,沿左子树向下搜索,将结点圧入栈中直到结点为空即到达最左端,出栈获得结点并访问,再沿右子树继续。可以看到与先序唯一的不同,先序是在压入栈之前访问,而中序则是在出栈之后访问。同样当栈为空时遍历完成。

代码


这里不贴完整代码了,其余与先序代码完全一致。关键函数代码如下:

    //非递归中序遍历
    public static void NotReCuInOrder(BiTree T) {
            //栈初始化
            Stack S = new Stack();
            S.top = -1;
            S.nodes = new BiTree[100];
            BiTree p = T;
            //遍历
            while(p != null || S.top != -1) {
                if(p != null) {
                    S.nodes[++S.top] = p;//入栈
                    p = p.lchild;//沿左子树向下
                } else {
                    p = S.nodes[S.top--];//出栈
                    System.out.print(p.data+" ");//访问
                    p = p.rchild;//沿右子树
                }
            }
    }

相关文章

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

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

  • Java二叉树的遍历

    Java二叉树的遍历 利用递归和非递归实现二叉树的先序,中序,后序遍历以及使用队列实现二叉树的层次遍历

  • LeetCode 二叉树的中序遍历(递归和非递归算法)

    二叉树的中序遍历给定一个二叉树,返回它的中序 遍历。示例: 非递归(思路更清晰): 非递归: 递归:

  • 二叉树遍历-JAVA实现

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

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

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

  • 算法之二叉树

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

  • 二叉树遍历

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

  • 总结

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

  • python遍历二叉树

    定义二叉树: 构建二叉树: BFS: 先序遍历:1.递归版本: 2.非递归版本: 中序遍历: 1.递归版本 2.非...

  • 二叉树遍历

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

网友评论

    本文标题:二叉树的非递归遍历二(中序/JAVA)

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