力扣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;
    }

}
相关推荐
-dzk-1 小时前
【代码随想录】LC 707.设计链表
数据结构·c++·算法·链表
Dave.B2 小时前
vtkPolyDataConnectivityFilter 实用指南
算法·vtk
you-_ling2 小时前
数据结构:3.栈和队列
数据结构
细节处有神明3 小时前
开源数据之历史气象数据的获取与使用
人工智能·python·算法
小白开始进步3 小时前
JAKA Zu12 机械臂运动学算法深度解析(含可视化方案)
python·算法·numpy
梵刹古音3 小时前
【C语言】 递归函数
c语言·数据结构·算法
yongui478343 小时前
混凝土二维随机骨料模型 MATLAB 实现
算法·matlab
酉鬼女又兒3 小时前
JAVA牛客入门11~20
算法