給你一個有根節點的二叉樹,找到它最深的葉節點的最近公共祖先。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