對稱二叉樹(思路與實現)

2021-08-21 03:56:43 字數 817 閱讀 8090

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

思路:

首先分析下這個對稱二叉樹,也就是乙個二叉樹中間對稱。所以我們可以使用遞迴的思想,首先以根節點以及其左右子樹,左子樹的左子樹和右子樹的右子樹相同,左子樹的右子樹和右子樹的左子樹相同。兩個條件都要符合,所以我們第乙個傳根節點的左子樹和右子樹,先判斷左右子樹根結點的比較。然後分辨對左子樹的左子樹和右子樹的右子樹。左子樹的右子樹和右子樹的左子樹進行判斷。只有兩個條件都滿足則返回的是true,一層一層遞迴進入,則可以得到結果。

實現:

/*

public class treenode }*/

public class solution

return comroot(proot.left, proot.right);

}public static boolean comroot(treenode left, treenode right)

if(right == null)

if(left.val != right.val)

//能執行到這一步,說明其傳進來的左子樹和右子樹不為null,且對應值相等,此時我們只需要,進行遞迴比較

//傳進來的左子樹的左子樹和傳進來右子樹的右子樹。傳進來的左子樹的右子樹和傳進來的右子樹的左子樹。

return comroot(left.left, right.right) && comroot(left.right, right.left);

}}

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

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

對稱二叉樹

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

對稱二叉樹

請實現乙個函式,用來判斷一顆二叉樹是不是對稱的。注意,如果乙個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。solution public class treenode 我們可以通過比較二叉樹的前序遍歷序列和對稱前序遍歷序列來判斷二叉樹是不是對稱的 public class solution bo...