劍指 Offer 28 對稱的二叉樹

2021-10-25 03:54:40 字數 1208 閱讀 1550

劍指 offer 28. 對稱的二叉樹

請實現乙個函式,用來判斷一棵二叉樹是不是對稱的。如果一棵二叉樹和它的映象一樣,那麼它是對稱的。

例如,二叉樹 [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:

輸入:root = [1,2,2,3,4,4,3]

輸出:true

示例 2:

輸入:root = [1,2,2,null,3,null,3]

輸出:false

限制:0 <= 節點個數 <= 1000

判斷對稱

根的左子節點的值 = 根的右子節點的值

根的左子節點的左子節點的值 = 根的右子節點的右子節點的值

根的左子節點的右子節點的值 = 根的右子節點的左子節點的值

1.遞迴

設指向根的左、右子節點的指標分別為p, q,隨後p左移時q右移,p右移時q左移。

每次檢查這兩個節點的值是否相等,如果相等再判斷左右子樹是否對稱

/**

* definition for a binary tree node.

* public class treenode

* }*/class

solution

public

boolean

check

(treenode p, treenode q)

}

遞迴轉化為迭代時一般會引入乙個佇列。初始時將根入隊兩次,每次提取兩個節點並比較值(佇列中連續兩個節點的值應該相等且子樹互為映象),然後將兩個節點的左右子樹按相反的順序插入佇列中

隊列為空或者連續兩個節點值不同(樹不對稱)則演算法結束

/**

* definition for a binary tree node.

* public class treenode

* }*/class

solution

return

true;}

}

劍指offer 28對稱的二叉樹

題目 判斷一棵二叉樹是不是對稱的。如果一棵二叉樹和它的映象一樣,那麼它是對稱的。思路分析 剛解答過27題,容易受上題影響,但大致思路是一致的 遞迴和迭代。舉乙個對稱的二叉樹例子可知,若二叉樹是對稱的,則其左子樹的左節點和其右子樹的右節點相等,左子樹的右節點和其右子樹的左節點相等。遞迴public b...

劍指 Offer 28 對稱的二叉樹

請實現乙個函式,用來判斷一棵二叉樹是不是對稱的。如果一棵二叉樹和它的映象一樣,那麼它是對稱的。例如,二叉樹 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 輸入 root 1 2,2...

劍指 Offer 28 對稱的二叉樹

請實現乙個函式,用來判斷一棵二叉樹是不是對稱的。如果一棵二叉樹和它的映象一樣,那麼它是對稱的。例如,二叉樹 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 輸入 root 1,2,...