这两题是相似的,都采用递归算法。看看把
题解:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
//中序遍历:可以理解为二叉树从左节边--->中间节点--->右节点
class Solution {
List<Integer> res=new ArrayList<Integer>();
public List<Integer> inorderTraversal(TreeNode root) {
if(root==null) {
return res;
}
inorderTraversal(root.left);//先将左节点遍历出来(递推)
res.add(root.val);//将当前节点写入集合
inorderTraversal(root.right);//将右节点遍历出来(回归)
return res;
}
}
下一题:
题解:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public int maxDepth(TreeNode root) {
if (root == null) {
return 0;
}
//获取左边深度
int left = maxDepth(root.left);
//获取右边深度
int right = maxDepth(root.right);
return Math.max(left, right) + 1;
}
}
然后有关递归有做笔记理解看这篇---------算法篇之递归