一、题目粗心
给定一个二叉树的根节点 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 节后活有点多呀