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

}
相关推荐
aqiu1111114 小时前
【C++算法打怪专栏】8. 字符串转换整数 (atoi)
开发语言·c++·算法
信奥卷王12 小时前
[GESP202609 六级] 分树规划
算法
夏幻灵12 小时前
LeetCode 21:合并两个有序链表——双指针与哑节点详解
算法·leetcode·链表
徐小黑ACG14 小时前
Golang 基础05 结构体struct
开发语言·算法·golang
码完就睡14 小时前
数据结构——红黑树
数据结构
码爸14 小时前
数据结构详细介绍
数据结构
Navigator_Z14 小时前
LeetCode //C - 1286. Iterator for Combination
c语言·算法·leetcode
北极有牛15 小时前
cpp学习笔记--常量指针
java·开发语言·算法
GPU实战笔记15 小时前
云端 GPU 训练的账户余额提醒:它能说明什么,不能说明什么?
深度学习·算法·成本管理·gpu云计算·云端训练