题意及思路
题意:求一棵树中最深叶子节点的最近的共同祖先。如果树的最深层只有一个叶子节点,则自己就是自己的最近祖先,总的来说,就是如果最深层有多个叶子节点返回其公共节点,反之返回最深处叶子节点。
思路:递归,暂时知道的就是这一个,树结构 && 知识储备 不太够。后续编辑。。。
代码1:
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { HashMap<TreeNode,Integer> map = new HashMap<TreeNode,Integer>(); public TreeNode lcaDeepestLeaves(TreeNode root) { if(root==null || heights(root.left)==heights(root.right)) return root; return lcaDeepestLeaves(heights(root.left)>heights(root.right)?root.left:root.right); } private int heights(TreeNode root){ if(root==null) return 0; if(map.containsKey(root)) return map.get(root); map.put(root,1+Math.max(heights(root.left),heights(root.right))); return map.get(root); } }