101 二叉樹 對稱二叉樹

2022-08-18 08:03:20 字數 720 閱讀 1526

方法一:遞迴

對於此題: 遞迴的點怎麼找?從拿到題的第一時間開始,思路如下:

怎麼判斷一棵樹是不是對稱二叉樹? 答案:如果所給根節點,為空,那麼是對稱。如果不為空的話,當他的左子樹與右子樹對稱時,他對稱。

那麼怎麼知道左子樹與右子樹對不對稱呢?在這我直接叫為左樹和右樹。 答案:如果左樹的左孩子與右樹的右孩子對稱,左樹的右孩子與右樹的左孩子對稱,那麼這個左樹和右樹就對稱。

仔細讀這句話,是不是有點繞?怎麼感覺有乙個功能a我想實現,但我去實現a的時候又要用到a實現後的功能呢?

當你思考到這裡的時候,遞迴點已經出現了, 遞迴點:我在嘗試判斷左樹與右樹對稱的條件時,發現其跟兩樹的孩子的對稱情況有關係。

想到這裡,你不必有太多疑問,上手去按思路寫**,函式a(左樹,右樹)功能是返回是否對稱。

def 函式a(左樹,右樹): 左樹節點值等於右樹節點值 且 函式a(左樹的左子樹,右樹的右子樹),函式a(左樹的右子樹,右樹的左子樹)均為真才返回真。

class solution

public boolean check(treenode p, treenode q)

if (p == null || q == null)

return p.val == q.val && check(p.left, q.right) && check(p.right, q.left);

}}

leetcode 二叉樹 對稱二叉樹

給定乙個二叉樹,檢查它是否是映象對稱的。例如,二叉樹 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 方法一 遞迴 思路 如果乙個樹的左子樹與右子樹映象對稱,則該樹是對稱的 兩個樹互為映象的...

對稱二叉樹c 對稱的二叉樹

很簡單,關鍵還是知道怎麼樣才能判斷乙個 二叉樹是否對稱,只要採用前序 中序 後序 層次遍歷等任何一種遍歷方法,分為先左後右和先 右後左兩種方法,只要兩次結果相等就說明這棵樹是一顆對稱二叉樹。迭代版本 class solution public bool issymmetric treenode ro...

對稱二叉樹

請實現乙個函式,用來判斷一顆二叉樹是不是對稱的。注意,如果乙個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。這題還是蠻簡單的。對稱二叉樹 include using namespace std struct treenode bool issymmetrical treenode proot1,t...