給定乙個二叉樹,找出其最大深度。
二叉樹的深度為根節點到最遠葉子節點的最長路徑上的節點數。
說明: 葉子節點是指沒有子節點的節點。
示例:給定二叉樹 [3,9,20,null,null,15,7],
3
/ \9 20
/ \
15 7
返回它的最大深度 3 。
對二叉樹進行層序遍歷,記錄遍歷過的層數。具體操作為,使用佇列,根節點入隊,隨後記錄佇列長度,並進入for迴圈。這樣可保證每次只遍歷一層,在遍歷時,將每個節點彈出佇列,隨後將彈出節點的非空子節點入隊。每一次for迴圈結束,代表遍歷一層。當佇列長度為0時,結束遍歷。
目前執行速度最快的程式如下:
# definition for a binary tree node.
# class treenode(object):
# def __init__(self, x):
# self.val = x
# self.left = none
# self.right = none
class
solution
(object):
defmaxdepth
(self, root)
:"""
:type root: treenode
:rtype: int
"""ifnot root:
return
0return1+
max(self.maxdepth(root.left)
,self.maxdepth(root.right)
)
採用遞迴的思路,去遞迴遍歷節點的左右子樹,每進一層,遞迴加1。 leetcode 二叉樹 對稱二叉樹
給定乙個二叉樹,檢查它是否是映象對稱的。例如,二叉樹 1,2,2,3,4,4,3 是對稱的。1 2 2 3 4 4 3 但是下面這個 1,2,2,null,3,null,3 則不是映象對稱的 1 2 2 3 3 方法一 遞迴 思路 如果乙個樹的左子樹與右子樹映象對稱,則該樹是對稱的 兩個樹互為映象的...
LeetCode (二叉樹)反轉二叉樹
遞迴交換每乙個節點的左右子樹,重點在於訪問每乙個節點,然後交換左右子樹 definition for a binary tree node.struct treenode struct treenode inverttree struct treenode root 由於至少要講每乙個節點都訪問一次...
leetcode 204 質數的個數
判斷n以內的所有的質數的個數,直接的想法是判斷每個數是不是質數。然而n以內的數是由質數和合數組成的,合數可以由質數生成,質數的倍數就是乙個合數。判斷乙個數是否為質數,就是判斷2 根下n的每個整數是否可以被n整除,若都不能被整除,則為質數,否則為合數。換個角度,即2 根下n的每個整數的倍數都是合數,通...