首页 > 其他分享 >力扣 LeetCode 94. 二叉树的中序遍历(Day6:二叉树)

力扣 LeetCode 94. 二叉树的中序遍历(Day6:二叉树)

时间:2024-11-16 11:45:37浏览次数:3  
标签:return cur recur Day6 res 中序 二叉树 null root

解题思路:

方法一:递归(左中右)

class Solution {
    List<Integer> res = new ArrayList<>();

    public List<Integer> inorderTraversal(TreeNode root) {
        recur(root);
        return res;
    }

    public void recur(TreeNode root) {
        if (root == null) return;
        recur(root.left);
        res.add(root.val);
        recur(root.right);
    }
}

方法二:迭代(非递归法)

前中后序迭代法都是使用栈

前序和后序使用类似的方法

中序方法不同与前序和后序,需要单独区分

 cur != null 时,首先 cur = cur.left 遍历到底进行栈push

为空时,回到上一个不为空的位置并弹出该值,继续 cur = cur.left 遍历该值右边的位置

注意while循环条件

class Solution {
    public List<Integer> inorderTraversal(TreeNode root) {
        Deque<TreeNode> stack = new ArrayDeque<>();
        List<Integer> res = new ArrayList<>();
        if (root == null) return res;

        TreeNode cur = root;
        while (cur != null || !stack.isEmpty()) {
            if (cur != null) {
                stack.push(cur);
                cur = cur.left;
            } else {
                cur = stack.pop();
                res.add(cur.val);
                cur = cur.right;
            }
        }
        return res;
    }
}

标签:return,cur,recur,Day6,res,中序,二叉树,null,root
From: https://blog.csdn.net/qq_61504864/article/details/143813214

相关文章

  • DAY64||dijkstra(堆优化版)精讲 ||Bellman_ford 算法精讲
    dijkstra(堆优化版)精讲题目如上题47.参加科学大会(第六期模拟笔试)邻接表本题使用邻接表解决问题。邻接表的优点:对于稀疏图的存储,只需要存储边,空间利用率高遍历节点链接情况相对容易缺点:检查任意两个节点间是否存在边,效率相对低,需要O(V)时间,V表示某节点链接其他节点的数......
  • DAY65||Bellman_ford 队列优化算法(又名SPFA)|bellman_ford之判断负权回路|bellman_ford
    Bellman_ford队列优化算法(又名SPFA)94.城市间货物运输I思路大家可以发现Bellman_ford算法每次松弛都是对所有边进行松弛。但真正有效的松弛,是基于已经计算过的节点在做的松弛。给大家举一个例子:本图中,对所有边进行松弛,真正有效的松弛,只有松弛边(节点1->节点2)和......
  • 114. 二叉树展开为链表
    题目链接解题思路:对于这类递归问题,采用「宏观」思考模式。对于任意一个节点A,左子树先「展开为链表」,右子树再「展开为链表」,然后A节点,将左子树的结果,和右子树的结果,「串在一起」即可。左子树展开为链表,所以要返回两个节点,一个是链表的头,然后是链表的尾。代码/***......
  • 617. 合并二叉树
    题目链接解题思路分情况讨论即可两个头都是空,直接返回空若root1为空,直接返回root2若roo2为空,直接返回root1若都不空,则二者相加,得到一个新节点A,然后二者的左子树去合并,得到一个新左子树new_left,二者的右子树去合并,得到一个新右子树new_right,然后新节点的左儿子就是new_......
  • 104. 二叉树的最大深度
    题目链接解题思路普通的递归可能很简单,但是,现在要求,使用「二叉树递归套路」来思考问题每个节点需要什么信息?如果根节点,能够有一个「最大深度」的信息,那么直接返回就可以了。那么,这个信息可以通过左子树信息+右子树信息得到吗?max(左子树最大深度,右子树最大深度)+1......
  • 102. 二叉树的层序遍历
    题目链接解题思路层序遍历就是用队列,本题需要一层一层收集答案,所以我们可以用一个变量cur,表示该层还剩多少节点需要收集,同时,遇到一个节点,还要将其孩子节点放入队尾。那么我们怎么知道下一层的节点个数,所以还需要一个变量next,记录下一层的节点个数。总结一遍:每次从队头......
  • LeetCode654.最大二叉树
    LeetCode刷题记录文章目录......
  • 根据前序中序求后序(树)
    题目描述给定一棵二叉树的前序遍历和中序遍历,求其后序遍历。输入读入2个两个字符串,每个一行,长度均小于等于26。 第一行为前序遍历,第二行为中序遍历。 二叉树中的结点名称以大写字母表示:A,B,C....。输出输出一行,为后序遍历的字符串。样例输入 ABCCBA样例输出  C......
  • 数据结构 ——— 利用前序序列重建链式二叉树
    目录题目要求链式二叉树示意图​编辑代码实现 题目要求读入用户输入的一串前序遍历的字符串,根据此字符串建立一个链式二叉树例如前序遍历的字符串为:ABC##DE#G##F###;其中"#"表示空树链式二叉树示意图以此图的链式二叉树为例子那么此链式二叉树前序遍历转换为字符......
  • Day6
    Day6当天站立式会议照片团队成员姓名学号昨天已完成的工作今天计划完成的工作工作中遇到的困难林涛(组长)3122004618测试api完成后台模块null杨森3122004629完成家长模块完成后台模块后台模块的事物操作钟礼骏3122006504完成家长模块完成家长模块......