2. 笨拙的迭代方法
3. 巧妙的迭代方法
/**
* @classname solution
* @description todo
* @date 2019/12/23 14:11
* @author sonnsei
*/public
class
solution
return
issymmetrical
(root.left, root.right);}
private
boolean
issymmetrical
(treenode left, treenode right)
if(left == null || right == null)
if(left.val != right.val)
return
issymmetrical
(left.left, right.right)
&&issymmetrical
(left.right, right.left);}
}
時間複雜度:o(n
)o(
n)空間複雜度:o(l
ogn)
o(logn
)層序遍歷之後判斷每層是否是對稱的
/**
* @classname solution3
* @description todo
* @date 2019/12/28 9:05
* @author sonnsei
*/public
class
solution3
arraylist
> lists =
newarraylist
<
>()
; queue
queue =
newlinkedlist
<
>()
; queue.
add(root)
;while
(!queue.
isempty()
)else
} lists.
add(
newarraylist
<
>
(curlevel));
}for
(arraylist
list : lists)
}return
true;}
/** * 檢測某個list中的元素是否是對稱的
* @param list
* @return
*/private
boolean
symmetric
(arraylist
list)
if(value!=null &&
!value.
equals
(list.
get(list.
size()
- i -1)
))}return
true;}
}
都是o(n
)o(
n)
/**
* @classname solution2
* @description todo
* @date 2019/12/28 9:05
* @author sonnsei
*/public
class
solution2
if(node1 == null || node2 == null)
if(node1.val != node2.val)
queue.
add(node1.left)
; queue.
add(node2.right)
; queue.
add(node1.right)
; queue.
add(node2.left);}
return
true;}
}
都是o(n
)o(
n)
58 對稱的二叉樹
請實現乙個函式,用來判斷一顆二叉樹是不是對稱的。注意,如果乙個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。遞迴 先判斷當前兩個節點是否相等,再判斷 節點a左子樹,節點b右子樹 和 節點a右子樹,節點b左子樹 是否相等 ublic class solution return sym proot.l...
58 對稱的二叉樹
題目描述 請實現乙個函式,用來判斷一顆二叉樹是不是對稱的。注意,如果乙個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。struct treenode class solution 思路 首先根節點以及其左右子樹,左子樹的左子樹和右子樹的右子樹相同,左子樹的右子樹和右子樹的左子樹相同即可,採用遞迴 ...
58 對稱的二叉樹
題目描述 請實現乙個函式,用來判斷一顆二叉樹是不是對稱的。注意,如果乙個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。分析 深入理解對稱 1 首先將二叉樹腦補為滿二叉樹,沒有的節點用null代替,2 二叉樹分別按照 根 左 右 和 根 右 左 順序遍歷,若兩次遍歷結果一致,即 對稱。struct ...