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

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

示例 2:
输入:root = []
输出:[]

示例 3:
输入:root = [1]
输出:[1]

常规中序遍历

  1. public void inOrder(TreeNode node) {
  2. // 递的结束条件
  3. if (node == null) {
  4. // 终止时处理办法
  5. return;
  6. }
  7. // 让当前节点的左子节点重复当前节点
  8. inOrder(node.left);
  9. // 当前节点需要做的事情
  10. nodeNeedTodo(node);
  11. // 让当前节点的右子节点重复做当前节点
  12. inOrder(node.right);
  13. }
  14. private void nodeNeedTodo(TreeNode node) {
  15. System.out.print(node.val + " ");
  16. }

返回二叉树内容的中序遍历

  1. public List<Integer> inorderTraversal(TreeNode root) {
  2. List<Integer> result = new ArrayList();
  3. inorder(root, result);
  4. return result;
  5. }
  6. public void inorder(TreeNode node, List<Integer> result) {
  7. // 递的结束条件
  8. if (node == null) {
  9. // 终止时处理办法
  10. return;
  11. }
  12. // 让当前节点的左子节点重复当前节点
  13. inorder(node.left, result);
  14. // 当前节点需要做的事情
  15. nodeNeedTodo(node, result);
  16. // 让当前节点的右子节点重复做当前节点
  17. inorder(node.right, result);
  18. }
  19. private void nodeNeedTodo(TreeNode node, List<Integer> result) {
  20. result.add(node.val);
  21. }