Problem
Given a binary tree rooted at root, the depth of each node is the shortest distance to the root.
A node is deepest if it has the largest depth possible among any node in the entire tree.
The subtree of a node is that node, plus the set of all descendants of that node.
Return the node with the largest depth such that it contains all the deepest nodes in its subtree.
题目链接
Solution
关键思路:
每个节点对应一个计数,叶子节点计该节点所在的深度,非叶子节点计该节点的所有子节点中叶子节点的最大深度。
代码:
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def subtreeWithAllDeepest(self, root):
"""
:type root: TreeNode
:rtype: TreeNode
"""
accessory = [0,root] #accessory[0]=maxDepth,accessory[1]=resultNode
def BST(node,depth):
if not node:
return depth
left = BST(node.left,depth+1)
right = BST(node.right,depth+1)
if left == right and left == accessory[0]:
accessory[1] = node
deepChild = max(left,right)
if deepChild>accessory[0]:
accessory[0] = deepChild
accessory[1] = node
return deepChild
BST(root,1)
return accessory[1]