原題描述:
在二叉樹中尋找值最大的節點並返回。
樣例
給出如下一棵二叉樹:
1
/ \
-5 2
/ \ / \
0 3 -4 -5
返回值為 3 的節點。
題目分析:
LintCode已實現NodeTree類,傳入的參數實際為一個NodeTree類型的二叉樹,沒有找到方法接觸源碼,只能通過網頁一步一步調試,分析出結構:
其中,Node節點類擁有三個屬性
left:當前節點的左節點
right:當前節點的右節點
val:當前節點的值
通過實現Solution類中的maxNode方法獲取傳入的二叉樹中的最大節點對象,非節點的值!這點要非常注意,不然就會報int類型不包含val屬性~
class Solution:
# @param {TreeNode} root the root of binary tree
# @return {TreeNode} the max node
maxNum = -9999
node = None
def maxNode(self, root):
# Write your code here
if root is None:
return None
self.max(root)
return self.node
def max(self,root): # 遞歸,循環二叉樹所有節點對象,將最大值的節點對象賦值給node
if root is None:
return None
if root.val > self.maxNum:
self.maxNum = root.val
self.node = root
self.max(root.left)
self.max(root.right)
