力扣hot100 - 94、二叉树的中序遍历

题目:

法一:递归

法二:迭代

整体思路:首先不断向左遍历左孩子,同时将遍历的节点存入栈中,如果当前节点为空,那么此时栈顶的元素就是中序遍历的第一个元素,将该元素弹出并且存入结果集合中,然后遍历该节点的右孩子,如果为空直接从栈里弹出一个节点,并存入结果集合中,不为空则不断向左遍历左孩子。定义一个结果reslut集合存储元素,一个栈存储节点。

java 复制代码
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public List<Integer> inorderTraversal(TreeNode root) {
        List<Integer> result = new ArrayList();
        Deque<TreeNode> stack = new ArrayDeque();
        if( root == null) return result;
        TreeNode cur = root;
        while(!stack.isEmpty() || cur != null){
            if(cur != null){
                stack.push(cur);
                cur = cur.left;
            }else{
                cur = stack.peek();
                stack.pop();
                result.add(cur.val);
                cur = cur.right;
            }
            

        }

         return result;
    }

}
相关推荐
Gigavision11 分钟前
基于BUAA-MIHR数据集的噪声解耦对比学习算法
人工智能·python·深度学习·算法
鹿角片ljp22 分钟前
LeetCode 64:最小路径和复盘|二维 DP 与 ACM 模式完整写法
java·数据结构·算法
彧azz2 小时前
算法设计与分析:贪心与动态规划
数据结构·学习·算法·贪心算法·动态规划
Beyond_System|系统之外2 小时前
【学编程】Python基础编程题100道(21-60)
开发语言·python·算法
景熙55233 小时前
15.Java 8 Stream 流入门到实战
java·开发语言·数据结构
漂流瓶jz4 小时前
UVA-1442 洞穴 题解答案代码 算法竞赛入门经典第二版
c++·算法·题解·aoapc·算法竞赛入门经典·uva
圣保罗的大教堂4 小时前
leetcode 835. 图像重叠 中等
leetcode
叠层归一研究院5 小时前
基于极限自指的叠层归一宇宙结构理论——无元外部封闭系统的内生区分模型
人工智能·经验分享·算法·agi
Selvaggia6 小时前
Diffusion Model 的基本原理与模型架构
算法
wabs6668 小时前
关于二叉树【力扣572.另一棵树的子树的思考】
数据结构·c++·算法·leetcode·二叉树