树的中序遍历新思路

Posted Fire king

tags:

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

class Solution 
    class ColorNode 
        TreeNode node;
        String color;
        
        public ColorNode(TreeNode node,String color)
            this.node = node;
            this.color = color;
        
    
    public List<Integer> inorderTraversal(TreeNode root) 
        if(root == null) return new ArrayList<Integer>();
            
        List<Integer> res = new ArrayList<>();
        Stack<ColorNode> stack = new Stack<>();
        stack.push(new ColorNode(root,"white"));
        
        while(!stack.empty())
            ColorNode cn = stack.pop();
            
            if(cn.color.equals("white"))
                if(cn.node.right != null) stack.push(new ColorNode(cn.node.right,"white"));
                stack.push(new ColorNode(cn.node,"gray"));
                if(cn.node.left != null)stack.push(new ColorNode(cn.node.left,"white"));
            else
                res.add(cn.node.val);
            
        
        
        return res;
    

以上是关于树的中序遍历新思路的主要内容,如果未能解决你的问题,请参考以下文章

每天一算:二叉树的中序遍历

数据结构与算法之深入解析“二叉树的中序遍历”的求解思路与算法示例

LeetCode94. 二叉树的中序遍历

255.LeetCode | 94. 二叉树的中序遍历

二叉树的中序遍历

Leetcode(94)-二叉树的中序遍历