LeetCode第145场周赛 2019-07-14

 

 

LeetCode第145场周赛 2019-07-14

题意及思路

题意:求一棵树中最深叶子节点的最近的共同祖先。如果树的最深层只有一个叶子节点,则自己就是自己的最近祖先,总的来说,就是如果最深层有多个叶子节点返回其公共节点,反之返回最深处叶子节点。

思路:递归,暂时知道的就是这一个,树结构 && 知识储备 不太够。后续编辑。。。

 

代码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);
    }
}

 

 

上一篇:【生信分析】生物分子网络构建基础——单调动力系统


下一篇:【C/C++无聊练手(一)】从「计算1/N的循环节」到「计算M/N的循环节」的理论推导&代码实现