力扣 101 對稱二叉樹 Golang

2021-10-04 04:51:37 字數 1786 閱讀 7989

知識點:樹

難度:簡單

題目:給定乙個二叉樹,檢查它是否是映象對稱的。

示例:

方法一:遞迴

如果乙個樹的左子樹與右子樹映象對稱,那麼這個樹是對稱的。

因此,該問題可以轉化為:兩個樹在什麼情況下互為映象?

如果同時滿足下面的條件,兩個樹互為映象:

1.它們的兩個根結點具有相同的值。

2.每個樹的右子樹都與另乙個樹的左子樹映象對稱。

就像人站在鏡子前審視自己那樣。鏡中的反射與現實中的人具有相同的頭部,但反射的右臂對應於人的左臂,反之亦然。

golang:

/**

* definition for a binary tree node.

* type treenode struct

*/func

issymmetricgo

(t1 *treenode, t2 *treenode)

bool

else

if t1==

nil|| t2==

nilreturn t1.val == t2.val &&

issymmetricgo

(t1.left, t2.right)

&&issymmetricgo

(t1.right, t2.left)

}func

issymmetric

(root *treenode)

bool

執行:

複雜度分析:

時間複雜度:o(n)

空間複雜度:o(n)

方法二:迭代

/**

* definition for a binary tree node.

* type treenode struct

*/func

issymmetric

(root *treenode)

bool

// 從左向右遍歷順序的佇列

rq :=

*treenode

// 從右向左遍歷順序的佇列

lq =

(lq, root)

// 加入初始節點

rq =

(rq, root)

forlen

(lq)!=0

&&len

(rq)!=0

else

if lcur!=

nil&& rcur!=

nil&& lcur.val == rcur.val

else}if

len(lq)==0

&&len

(rq)==0

else

}

執行:

複雜度分析:

時間複雜度:o(n)

空間複雜度:o(n)

力扣 101 對稱二叉樹

一 題目描述 給定乙個二叉樹,檢查它是否是映象對稱的。例如,二叉樹 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 判斷左子樹a和右...

101 對稱二叉樹 (力扣)

給定乙個二叉樹,檢查它是否是映象對稱的。例如,二叉樹 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 3bool issymmetric2 struct treenode q,struct tr...

力扣101 對稱二叉樹

判斷二叉樹是否對稱 給定一棵二叉樹,判斷琪是否是自身的映象 即 是否對稱 例如 下面這棵二叉樹是對稱的 2 2 3 4 4 3 下面這棵二叉樹不對稱。2 2 3 3 備註 希望你可以用遞迴和迭代兩種方法解決這個問題 示例1輸入 輸出true 示例2輸入 輸出false 對稱二叉樹 模式識別 深度搜尋...