给你一个有根节点的二叉树,找到它最深的叶节点的最近公共祖先。node
回想一下:this
0
,若是某一节点的深度为 d
,那它的子节点的深度就是 d+1
A
是一组节点 S
的 最近公共祖先,s
中的每一个节点都在以 A
为根节点的子树中,且 A
的深度达到此条件下可能的最大值。
示例 1:spa
输入:root = [1,2,3] 输出:[1,2,3]
示例 2:code
输入:root = [1,2,3,4] 输出:[4]
示例 3:blog
输入:root = [1,2,3,4,5] 输出:[2,4,5]
提示:it
/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } */ /** * @param {TreeNode} root * @return {TreeNode} */ var lcaDeepestLeaves = function(root) { let parent=null let maxLevel=0 deep(root,0) return parent function deep(root,level){ if(!root)return 0 let left=deep(root.left,level+1) let right=deep(root.right,level+1) let max=Math.max(left,right)+1 maxLevel=Math.max(maxLevel,level) if(left===right){ if(level+left===maxLevel || max===maxLevel){ parent=root } } return max } };
解析:io
有必要深刻探讨function