二叉树oj ---->中序遍历(非递归)

Posted ohana!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树oj ---->中序遍历(非递归)相关的知识,希望对你有一定的参考价值。

题目内容:

解题思路:

主要的思路和之前的先序遍历差不多,也是利用栈的特性,不同的地方也比较小

  • 首先遍历根节点的左子树,直到左子树为空时,遍历当前结点,中序遍历的顺序是(左子树   根节点   右子树),不能直接先遍历结点,所以,这次需要保存的是当前结点

解题代码:

class Solution {
    public List<Integer> inorderTraversal(TreeNode root) {
        List<Integer> list = new ArrayList<>();

        if(root == null){
            return list;
        }
        Stack<TreeNode> s = new Stack<>();
        TreeNode cur = root;
        while(!s.empty() || cur != null){
            //先往左子树遍历
            while(cur != null){
                s.push(cur);
                cur = cur.left;
            }

            cur = s.pop();
            list.add(cur.val);
            cur = cur.right;
        }
        return list;
    }
}

以上是关于二叉树oj ---->中序遍历(非递归)的主要内容,如果未能解决你的问题,请参考以下文章

[05数据结构](初阶)二叉树的基本理解堆的概念和结构及二叉树OJ面试题

创作赢红包< 二叉树OJ题 >单值二叉树&&二叉树的最大深度&&翻转二叉树&&相同的树&&对称二叉树

二叉树oj---->对称的二叉树

二叉树oj ----->二叉树的最近公共祖先

二叉树oj ------>二叉树中和为某一值的路径

北邮OJ 100. 二叉树的层数