最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

算法:二叉樹的鏡像

2022-08-02 10:06 作者:做架構(gòu)師不做框架師  | 我要投稿


請完成一個函數(shù),輸入一個二叉樹,該函數(shù)輸出它的鏡像。

例如輸入:


4

/ \

2 7

/ \ / \

1 3 6 9

鏡像輸出:


4

/ \

7 2

/ \ / \

9 6 3 1

示例

  • 輸入:root = [4,2,7,1,3,6,9]

  • 輸出:[4,7,2,9,6,3,1]

限制

  • 0 <= 節(jié)點(diǎn)個數(shù) <= 1000

方法一:遞歸

一點(diǎn)點(diǎn)經(jīng)驗(yàn):每次看到有關(guān)樹的算法的時候,我腦海里第一個想到的都是“先試試用遞歸可不可以”,閱讀完題目后發(fā)現(xiàn),no problem!

從根節(jié)點(diǎn)開始,遞歸遍歷整個二叉樹,交換每個節(jié)點(diǎn)的左/右子節(jié)點(diǎn),就生成它的鏡像了。

算法流程:

  • 如果為空(即遍歷葉子節(jié)點(diǎn)),直接返回null;

  • 旋轉(zhuǎn),遞歸左/右子節(jié)點(diǎn);

  • 并將返回值作為當(dāng)前節(jié)點(diǎn)的右/左子節(jié)點(diǎn);

  • 返回當(dāng)前節(jié)點(diǎn)。

代碼如下:

復(fù)雜度分析

  • 時間復(fù)雜度:O(N),其中 N 為二叉樹節(jié)點(diǎn)的數(shù)目。我們會遍歷二叉樹中的每一個節(jié)點(diǎn),對每個節(jié)點(diǎn)而言,我們在常數(shù)時間內(nèi)交換其兩棵子樹。

  • 空間復(fù)雜度:O(N)。使用的空間由遞歸棧的深度決定,它等于當(dāng)前節(jié)點(diǎn)在二叉樹中的高度。在平均情況下,二叉樹的高度與節(jié)點(diǎn)個數(shù)為對數(shù)關(guān)系,即 O(logN)。而在最壞情況下,樹形成鏈狀,空間復(fù)雜度為 O(N)。

方法二:輔助棧(或隊(duì)列)

利用棧(或隊(duì)列)遍歷樹的所有節(jié)點(diǎn),并交換每個節(jié)點(diǎn)的左/右子節(jié)點(diǎn)。

算法流程:

  • 如果為空(即遍歷葉子節(jié)點(diǎn)),直接返回null;

  • 把根節(jié)點(diǎn)加入到棧(或隊(duì)列)中;

  • 彈出棧(或隊(duì)列)中的根節(jié)點(diǎn)(當(dāng)前節(jié)點(diǎn));

  • 如果左/右子節(jié)點(diǎn)非空,將左/右子節(jié)點(diǎn)入棧(或隊(duì)列);

  • 交換當(dāng)前節(jié)點(diǎn)的左/右子節(jié)點(diǎn);

  • 當(dāng)棧(或隊(duì)列)為空時返回根節(jié)點(diǎn)。

代碼如下:

復(fù)雜度分析

  • 時間復(fù)雜度:O(N),其中 N 為二叉樹的節(jié)點(diǎn)數(shù)量,建立二叉樹鏡像需要遍歷樹的所有節(jié)點(diǎn),占用 O(N) 時間。

  • 空間復(fù)雜度:O(N),最差情況下,棧 stack 最多同時存儲

(N+1)/2 個節(jié)點(diǎn),占用 O(N) 額外空間。

END

遞歸是自下而上交換,棧是自上而下交換。

本文內(nèi)容出處是力扣官網(wǎng),希望和大家一起刷算法,在后面的路上不變禿但是變強(qiáng)!

好兄弟可以點(diǎn)贊并關(guān)注我的公眾號“javaAnswer”,全部都是干貨。


算法:二叉樹的鏡像的評論 (共 條)

分享到微博請遵守國家法律
宁明县| 永吉县| 交城县| 庆元县| 桃园市| 土默特右旗| 富民县| 海安县| 开封市| 天峻县| 井陉县| 富川| 西安市| 朝阳区| 北流市| 洛阳市| 图片| 铁力市| 赣州市| 金堂县| 攀枝花市| 黄平县| 丽江市| 大石桥市| 长治县| 太湖县| 罗定市| 秦安县| 铜陵市| 旬邑县| 宁化县| 靖远县| 赫章县| 安远县| 无锡市| 山东省| 前郭尔| 贵港市| 宽城| 峨眉山市| 珲春市|