94,中序遍历二叉树,104,二叉树的最大深度,226,翻转二叉树

94,中序遍历二叉树,104,二叉树的最大深度,226,翻转二叉树 三题二叉树都是用的递归。/** * 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 ListInteger inorderTraversal(TreeNode root) { // 1. 创建 ArrayList用来存放遍历结果 ListInteger res new ArrayListInteger(); // 2. 调用递归函数传入根节点、结果集合 inorder(root, res); // 3. 返回保存好的遍历序列 return res; } // 递归辅助函数 public void inorder(TreeNode root, Listlt;Integergt; res) { // 基线条件当前节点为空直接返回终止递归 if (root null) { return; } // 第一步递归遍历【左子树】 inorder(root.left, res); // 第二步访问【根节点】把值加入结果列表 res.add(root.val); // 第三步递归遍历【右子树】 inorder(root.right, res); } }/** * 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 int maxDepth(TreeNode root) { if (root null) { return 0; } else { int leftHeight maxDepth(root.left); int rightHeight maxDepth(root.right); return Math.max(leftHeight, rightHeight) 1; } } }public TreeNode invertTree(TreeNode root) { // 基线条件 if (root null) { return null; } // 递递归翻转左右子树 TreeNode left invertTree(root.left); TreeNode right invertTree(root.right); // 归交换当前节点左右指针 root.left right; root.right left; return root; }