58 對稱的二叉樹

2021-10-01 18:44:05 字數 2156 閱讀 8051

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 ...