力扣 865 具有所有最深节点的最小子树

题意:给定一个树,返回具有最深节点的最小子树

思路:后跟遍历树

  1. 如果节点为null,返回null
  2. 获取左右子树的最大深度
  3. 如果左右子树相等,且深度大于等于当前的最大深度,那么更新结果
  4. 返回左右子树中的较大的深度

思想:后跟遍历

复杂度:时间O(n),空间O(n)

class Solution {
    TreeNode res;
    int maxLevel = 0;
    public TreeNode subtreeWithAllDeepest(TreeNode root) {
        if(root == null)
            return root;
        res = root;
        get(root, 1);
        return res;
    }
    int get(TreeNode root, int level) {
        if(root == null)
            return level;
        int left = get(root.left, level + 1);
        int right = get(root.right, level + 1);
        if(left == right && left >= maxLevel) {
            maxLevel = left;
            res = root;
        }
        
        return Math.max(left, right);
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容