判斷兩個二叉樹是否互相映象 翻轉等價二叉樹

2021-10-07 05:15:22 字數 1175 閱讀 4903

思路:

當兩個二叉樹都為null是,則為映象。

否則,當其中乙個為null時,返回false。

如果都不為null,並且節點的值不相等,則為false。

這時,遞迴的結束條件都已列舉完畢,接下來就是遞迴呼叫了。

遞迴root1的左子樹和root2的右子樹是否互為映象,並且遞迴root1的右子樹和root2的左子樹互為映象,如果兩個條件都成立,則他們互為映象。

/**

* 判斷兩個二叉樹是否互相映象

* @param root1

* @param root2

* @return

*/public boolean flipequiv(treenode root1, treenode root2) else if (root1 == null || root2 == null)

if (root1.val != root2.val)

return flipequiv(root1.left, root2.right) && flipequiv(root1.right, root2.left);

}

力扣951. 翻轉等價二叉樹

我們可以為二叉樹 t 定義乙個翻轉操作,如下所示:選擇任意節點,然後交換它的左子樹和右子樹。

只要經過一定次數的翻轉操作後,能使 x 等於 y,我們就稱二叉樹 x 翻轉等價於二叉樹 y。

編寫乙個判斷兩個二叉樹是否是翻轉等價的函式。這些樹由根節點 root1 和 root2 給出。

這個題目和」判斷兩個二叉樹是否互相映象」非常相似,但是它增加了子樹可以多次翻轉的條件,所以我們只需要修改最後的遍歷條件即可。

public boolean flipequiv(treenode root1, treenode root2) else if (root1 == null || root2 == null)

if (root1.val != root2.val)

return (flipequiv(root1.left, root2.right) && flipequiv(root1.right, root2.left))

|| (flipequiv(root1.left, root2.left) && flipequiv(root1.right, root2.right));

}

判斷兩個樹是否互相映象

3.判斷兩個樹是否互相映象 public static boolean ismirrorrec treenode r1,treenode r2 如果有一棵樹是空樹,另一顆不是,則返回false if r1 null r2 null 如果兩個樹都非空樹,則先比較根節點 if r1.val r2.val...

判斷兩個二叉樹是否相同

判斷兩個二叉樹是否相同 遞迴解法 public boolean issametreerec treenode p,treenode q if p null q null else else else 第一次寫了乙個是這樣的,自己覺得也可以,提交時不能ac,想了下根本是自己演算法立足點不對,分享下 對...

兩個二叉樹是否呈映象對稱

題目描述 給定兩個二叉樹,檢查它們是否呈映象對稱,即樹的結構成軸對稱,且對應節點的節點值相同。輸入格式 第一棵樹的輸入在第11行,表示二叉樹的前序遍歷序列。第二棵樹的輸入在第22行,表示二叉樹的前序遍歷序列。節點值的範圍為 0,100 0,100 區間內的整數,輸入中的 1 1表示空節點。輸出格式 ...