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

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

作者: Haward_ | 来源:发表于2019-09-27 22:51 被阅读0次

思想:
借助栈,入栈循序:右根左(即中序遍历反过来);然后借助visit标记;如标记过则添加进结果;否则,则标记下,入栈

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
import java.util.HashMap;
import java.util.LinkedList;
import java.util.ArrayList;
class Solution {
    public List<Integer> inorderTraversal(TreeNode root) {
        List<Integer> res = new ArrayList<>();
        if(root==null) {
            return res;
        }
        HashMap<TreeNode,Boolean> map = new HashMap<>();
        LinkedList<TreeNode> stack = new LinkedList<>();
        map.put(root,false);
        stack.add(root);
        while(stack.size()>0) {
            TreeNode node = stack.pollLast();
            if(map.get(node)==true) {
                res.add(node.val);
            }else {
                if(node.right!=null) {
                    stack.add(node.right);
                    map.put(node.right,false);
                }
                stack.add(node);
                map.put(node,true);
                if(node.left!=null) {
                    stack.add(node.left);
                    map.put(node.left,false);
                }
            }
        }
        return res;
    }
}

相关文章

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

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

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

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

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

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

  • 二叉树遍历-JAVA实现

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

  • 二叉树遍历

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

  • 算法之二叉树

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

  • 二叉树遍历

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

  • 总结

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

  • python遍历二叉树

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

  • 二叉树遍历

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

网友评论

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

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