劍指offer 對稱的二叉樹

2021-08-28 10:39:35 字數 1433 閱讀 3352

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

遞迴版本:判斷左右孩子是否相等,相等後返回true。注意只有左右都是none的時候才相等,兩個結點的值一樣並不是結點一樣,因為指向的位址不一樣。如果左右結點的值一樣的話,遞迴比較左右孩子映象相等。不滿足的話返回false。

# -*- 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 proot==none:

return true

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

def find(self,left,right):

if left==right:

return true

if left!=none and right!=none and left.val==right.val:

return self.find(left.left,right.right) and self.find(left.right,right.left)

else:

return false

比較簡單的問題再上乙個非遞迴版本,用佇列來實現

# -*- 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

p=proot

if p==none:

return true

q=while q!=:

left=q.pop(0)

right=q.pop(0)

if left==right:

continue

if left==none or right==none:

return false

if left.val!=right.val:

return false

return true

劍指Offer 二叉樹 對稱的二叉樹

含有兩道題,都從樹的遞迴入手 請完成乙個函式,輸入乙個二叉樹,該函式輸出它的映象。解題思路 映象翻 只需要遍歷二叉樹,每次訪問乙個結點時,交換其左右子樹。實現 definition for a binary tree node.class treenode def init self,x self....

劍指offer 對稱的二叉樹

請實現乙個函式,用來判斷一顆二叉樹是不是對稱的。注意,如果乙個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。思路 複製一顆二叉樹,在該二叉樹的基礎上求得二叉樹的映象,同時遍歷兩顆二叉樹,判斷每乙個節點是否相同。public class solution private treenode copy ...

劍指offer 對稱的二叉樹

請實現乙個函式,用來判斷一顆二叉樹是不是對稱的。注意,如果乙個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。遞迴 coding utf 8 class treenode def init self,x self.val x self.left none self.right none class ...