如何判斷二叉樹是否對稱?

2022-08-19 17:45:08 字數 3019 閱讀 3805

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

class

node():

def __init__(self,val):

self.val =val

self.lchild =none

self.rchild =none

class

tree():

def __init__(self,root):

self.root =root

def add(self,item):

node =node(item)

ifnot self.root:

self.root =node

return

else

: quene =[self.root]

while

quene:

cur_node = quene.pop(0

)

ifnot cur_node.lchild:

cur_node.lchild =node

return

else

:

ifnot cur_node.rchild:

cur_node.rchild =node

print(

222222

,node.val)

return

else

:

# def seek(self):

#

ifnot root:

#

return

# #方法1:廣度遍歷

# llist =[self.root.lchild]

# rlist =[self.root.rchild]

# lquene =[self.root.lchild]

# rquene =[self.root.rchild]

# print(rquene)

# # 廣度遍歷左子樹

#

while

lquene:

# cur_node = lquene.pop(0

)#

ifcur_node.lchild:

#

ifcur_node.rchild:

# #廣度遍歷右子樹

#

while

rquene:

# cur_node = rquene.pop(0

)#

ifcur_node.lchild:

#

ifcur_node.rchild:

# n1 =len(llist)

# n2 =len(rlist)

# l1 = [i.val for i in

llist]

# l2 = [i.val for i in

rlist]

# print(l1,l2)

#

if n1 !=n2:

#

return

false

#

for i in

range(n1):

#

if llist[i].val !=rlist[i].val:

#

return

false

#

return

true

#

#方法二:深度遍歷

#深度遍歷(先序)

def seek(self):

ifnot self.root:

return

def deep_xian(root,a):

if root==none:

return

else

: deep_xian(root.lchild,a)

deep_xian(root.rchild,a)

llist =

rlist =

deep_xian(root.lchild,llist)

deep_xian(root.rchild,rlist)

n1 =len(llist)

n2 =len(rlist)

l1 = [i.val for i in

llist]

l2 = [i.val for i in

rlist]

print(l1,l2)

if n1 !=n2:

return

false

for i in

range(n1):

if llist[i].val !=rlist[i].val:

return

false

return

true

# 測試

root = node(1

)etree =tree(root)

etree.add(2)

etree.add(3)

etree.add(4)

etree.add(5)

etree.add(6)

etree.add(7)

etree.add(8)

etree.add(9)

etree.add(10)

print(etree.seek())

判斷二叉樹是否對稱

題目描述 time limit 1000 ms memory limit 256 mb 層次遍歷的方式輸入乙個二叉樹,判斷這個二叉樹的結構 即不用管結點的值 是否映象對稱。輸入輸出格式 輸入描述 輸入一行字母,其中 表示空節點 字母長度小於1000 輸出描述 如果輸入的二叉樹對稱,輸出yes,否則輸...

判斷二叉樹是否是對稱二叉樹

給定乙個二叉樹,檢查它是否是映象對稱的。例如,二叉樹 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 遞迴實現 需要滿足兩個子樹 根節點值相同 根節點1的左子樹與根節點2右子樹相同 根節點1...

判斷是否為對稱二叉樹

description 判斷一棵二叉樹是否對稱。二叉樹節點定義如上次的結構相同 typedef struct node bn 不用關心輸入,二叉樹構造和刪除過程已經在main函式中實現,需要你們實現函式 int issymmetric bn root 來判斷一棵二叉樹是否對稱,對稱返回1,非對稱返回...