給定乙個二叉樹,檢查它是否是映象對稱的。
例如,二叉樹 [1,2,2,3,4,4,3] 是對稱的。
1/ \
2 2
/ \ / \
3 4 4 3
如果你可以運用遞迴和迭代兩種方法解決這個問題,會很加分。
解法1:遞迴,比較簡單解法2:迭代 (可以用層序,也可以用中序)
借助兩個佇列queue來實現,我們首先判空,如果root為空,直接返回true。否則將root的左右兩個子結點分別裝入兩個佇列,然後開始迴圈,迴圈條件是兩個佇列都不為空。在while迴圈中,我們首先分別將兩個佇列中的隊首元素取出來,如果兩個都是空結點,那麼直接跳過,因為我們還沒有比較完,有可能某個結點沒有左子結點,但是右子結點仍然存在,所以這裡只能continue。然後再看,如果有乙個為空,另乙個不為空,那麼此時對稱性已經被破壞了,不用再比下去了,直接返回false。若兩個結點都存在,但是其結點值不同,這也破壞了對稱性,返回false。否則的話將node1的左子結點和右子結點排入佇列1,注意這裡要將node2的右子結點和左子結點排入佇列2,注意順序的對應問題。最後迴圈結束後直接返回true
// 遞迴**
class solution
bool core(treenode *lhs, treenode* rhs)
};//迭代**
class solution
return true;
}};// 中序遍歷版
class solution
if(l || r) return false;
l=left.top(); left.pop();
r=right.top(); right.pop();
if(l->val != r->val) return false;
l=l->right; r=r->left;
}return true;
}};
LeetCode 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 說明 如果你可以遞迴地和迭代地解決它就獎勵你點數。建立乙個映象的樹,然...
LeetCode(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說明 如果你可以運用遞迴和迭代兩種方法解決這個問題,會很加分。這道題也是劍指offer上的2...
leetcode 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思路 如果同時滿足下面的條件,兩個樹互為映象 它們的兩個根結點具有相同的值。每個樹的右子樹都...