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

}
相关推荐
LSL666_6 分钟前
Redis值数据类型——hash
redis·算法·哈希算法·数据类型
喵喵蒻葉睦8 分钟前
力扣 hot100 滑动窗口最大值 单调双端队列 java 简单题解
java·数据结构·算法·leetcode·双端队列·滑动窗口·队列
样例过了就是过了10 分钟前
LeetCode热题100 搜索二维矩阵
数据结构·c++·算法·leetcode·矩阵
2401_8319207415 分钟前
C++与Qt图形开发
开发语言·c++·算法
Shining059617 分钟前
AI 编译器系列(四)《AI 编译器中的后端优化》
linux·服务器·人工智能·线性代数·算法·triton·ai编译器
像污秽一样35 分钟前
算法设计与分析-习题8.1
数据结构·算法·dfs·dp
飞天狗11137 分钟前
最小生成树算法
算法
H_老邪1 小时前
贪心算法的应用
算法·ios·贪心算法
葳_人生_蕤1 小时前
Hot100——739.每日温度
数据结构·算法
Elsa️7461 小时前
洛谷p1046:用一个题练习排序+二分查找
c++·算法