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

歡迎光臨散文網(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”,全部都是干貨。


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

分享到微博請遵守國家法律
五寨县| 同德县| 安阳县| 花莲市| 名山县| 高台县| 于田县| 思茅市| 云南省| 东丽区| 诏安县| 文安县| 聊城市| 元氏县| 霍州市| 崇礼县| 宣武区| 屯留县| 嘉鱼县| 离岛区| 安塞县| 阳春市| 汉川市| 扬中市| 乌苏市| 长泰县| 新巴尔虎左旗| 东莞市| 马鞍山市| 吉木萨尔县| 连山| 长丰县| 湘潭县| 阿坝县| 新野县| 阿拉善左旗| 天柱县| 黄骅市| 海原县| 和平县| 涞水县|