数据结构树这章,前40个题里,6个题的递归不明白。
过完后面另外40个题,总结一下递归,Mark一下。
带有return 关键字的递归 ?
P131:29题
查找二叉树中两个结点的最近公共祖先(LCA)
class Solution {
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
if (root == null) return root;
if (root == p || root == q) return root; //不需要继续遍历后面的,返回当前结点。
TreeNode left = lowestCommonAncestor(root.left, p, q);
TreeNode right = lowestCommonAncestor(root.right, p, q);
if (left != null && right != null) return root; //根两侧,则为根
if (left == null && right != null) return right; //根一侧,则为递归的递的路上遇到的第一个值。
if (left != null && right == null) return left;
return null;
}
}
P134:33题。
根据前序构造一棵树,规则每个结点只能有0个或者2个孩子。叶子是:“L”,内部结点是“I”,前序:ILILL。
递归讲解:
https://blog.csdn.net/sinat_38052999/article/details/73303111
https://blog.csdn.net/allenchenhh133/article/details/80291252