乐趣区

关于leetcode:leetcode-94-Binary-Tree-Inorder-Traversal-二叉树的中序遍历中等

一、题目粗心

给定一个二叉树的根节点 root,返回 它的 中序 遍历。

示例 1:

输出:root = [1,null,2,3]

输入:[1,3,2]

示例 2:

输出:root = []

输入:[]

示例 3:

输出:root = [1]

输入:[1]

提醒:

  • 树中节点数目在范畴 [0, 100] 内
  • -100 <= Node.val <= 100

起源:力扣(LeetCode)
链接:https://leetcode.cn/problems/…
著作权归领扣网络所有。商业转载请分割官网受权,非商业转载请注明出处。

二、解题思路

二叉树的中序遍历程序为左 根 右,能够用递归和非递归来解。递归解法非常间接,对左了节点调用递归函数,根节点拜访值,右子节点再调用递归函数。

非递归有两种办法,一种应用栈:从根节点开始,先将根节点压入栈,而后再将其所有左节点压入栈,而后取出栈顶节点,保留节点值,再将以后指针移到其右子节点上,若存在右子节点,则在下次循环时又可将其所有左子节点压入栈中,这样就保障了拜访程序为左 根 右。

三、解题办法

3.1 Java 实现 – 递归实现

public class Solution {public List<Integer> inorderTraversal(TreeNode root) {List<Integer> list = new ArrayList<>();
        traverse(list, root);
        return list;
    }

    public void traverse(List<Integer> list, TreeNode root) {if (root == null) {return;}
        traverse(list, root.left);
        list.add(root.val);
        traverse(list, root.right);
    }
}

四、总结小记

  • 2022/10/8 节后活有点多呀
退出移动版