在刷leetcode的過程中發現,在原網頁輸入答案是不需要自己構築樹和鏈表的,雖然便於直接思考算法,但是久而久之類似過於依賴編輯器,反而不知道如何創建樹和鏈表,因此總結了該網頁省略的部分,以其中題為例呈現出來。
1、樹狀圖題目,判定對稱樹
class TreeNode(object):
def __init__(self, x,left,right):#此處有改動原網頁是(self,x)此處多加了left和right,因為這樣在下面構造鏈表時可以輸入三個參數,而按原網頁的方式每次只能傳遞一個參數,每個節點都要再加個類名很不方便
self.val = x
self.left = None
self.right = None
class Solution(object):
def isSymmetric(self, root):
"""
:type root: TreeNode
:rtype: bool
"""
if not root:
return True
while root:
return self.isSymmetriclr(root.left,root.right)
def isSymmetriclr(self,left,right):
if not (left or right):
return True
if (left==None and right) or (left and right==None):
return False
if left.val!=right.val:
return False
if not self.isSymmetriclr(left.left,right.right):
return False
if not self.isSymmetriclr(left.right,right.left):
return False
return True
#下面是實例化構造二叉樹部分和判斷對稱部分的實例化
tree=TreeNode(1,(2,3,(4,3)),(2,(4,None,3),3))#此處可直接傳3個參數
a=Solution()
print a.isSymmetric(tree)