給定乙個二叉樹,檢查它是否是映象對稱的。例如,二叉樹 [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
高階:你可以運用遞迴和迭代兩種方法解決這個問題嗎?
//---------------------------------我是遞迴----------------
//如果當前樹是對稱的,那麼其左右節點相等,左右節點下的子樹對稱
public
boolean
issymmetric(treenode root)
/*** 看了題解,這個思路真是絕了,遍歷兩個root
**/public
boolean
def(treenode left,treenode right)
if((left == null && right != null) || (left != null && right == null
))
if(left.val !=right.val)
if(!def(left.left,right.right))
return
def(left.right,right.left);
}//時間複雜度o(n)
//空間複雜度o(n)
//---------------------------------我是迭代----------------
//如果當前樹是對稱的,那麼其左右節點相等,左右節點下的子樹對稱
public
boolean
issymmetric(treenode root)
stack
stack1 = new
stack();
stack1.push(root);
stack
stack2 = new
stack();
stack2.push(root);
while(!stack1.isempty() && !stack2.isempty())
//判斷空值是否相等
if((temp1.left == null && temp2.right != null) || (temp1.left != null && temp2.right == null
))
if(temp1.left != null && temp2.right != null
)
if(temp1.right != null && temp2.left != null
) }
return
true
; }
//時間複雜度o(n)
//空間複雜度o(n)
力扣 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 二 解題思路 遞迴思想。1 先判斷根節點是否為空節點 2 判斷左子樹a和右...
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 3bool issymmetric2 struct treenode q,struct tr...
力扣101 對稱二叉樹
判斷二叉樹是否對稱 給定一棵二叉樹,判斷琪是否是自身的映象 即 是否對稱 例如 下面這棵二叉樹是對稱的 2 2 3 4 4 3 下面這棵二叉樹不對稱。2 2 3 3 備註 希望你可以用遞迴和迭代兩種方法解決這個問題 示例1輸入 輸出true 示例2輸入 輸出false 對稱二叉樹 模式識別 深度搜尋...