劍指Offer 程式設計題58 對稱的二叉樹

2021-08-28 13:59:22 字數 1305 閱讀 4641

題目:請實現乙個函式,用來判斷一顆二叉樹是不是對稱的。注意,如果乙個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。

牛客網:鏈結

二叉樹的映象和對稱二叉樹的區別:

源二叉樹                             

8/ \

6 10

/ \ / \

5 7 9 11

映象二叉樹

8/ \

10 6

/ \ / \

11 9 7 5

對稱二叉樹

8/ \

10 10

/ \ / \

11 9 9 11

**:

# -*- coding:utf-8 -*-

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class solution:

def issymmetrical(self, proot):

# write code here

if not proot:

return true

if not proot.left and not proot.right:

return true

return self.symmeric(proot.left, proot.right)

def symmeric(self, roota, rootb):

if not roota and not rootb:

return true

if not roota or not rootb or roota.val != rootb.val:

return false

return self.symmeric(roota.left, rootb.right) and self.symmeric(roota.right, rootb.left)

pnode1 = treenode(8)

pnode2 = treenode(6)

pnode1.left = pnode2

s = solution()

result = s.issymmetrical(pnode1)

print(result)

58 對稱的二叉樹 劍指offer

請實現乙個函式,用來判斷一顆二叉樹是不是對稱的。注意,如果乙個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。很簡單,關鍵還是知道怎麼樣才能判斷乙個 二叉樹是否對稱,只要採用前序 中序 後序 層次遍歷等任何一種遍歷方法,分為先左後右和先 右後左兩種方法,只要兩次結果相等就說明這棵樹是一顆對稱二叉樹。...

劍指offer系列(58)對稱二叉樹

題目描述 請實現乙個函式,用來判斷一顆二叉樹是不是對稱的。注意,如果乙個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。思路分析 此題同原 leetcode 101 symmetric tree 整體思路 將對稱二叉樹的檢驗轉換為與映象二叉樹是否為相等樹的問題 遞迴方法 比較對應左子樹與右子樹值 迴...

劍指offer 58 對稱的二叉樹

請實現乙個函式,用來判斷一顆二叉樹是不是對稱的。注意,如果乙個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。時間限制 1秒 空間限制 32768k 熱度指數 121507 見 struct treenode class solution bool match treenode l,treenode...