日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

创建的二叉树后续非递归遍历结果为_一入递归深似海,从此offer是路人

發布時間:2025/4/16 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 创建的二叉树后续非递归遍历结果为_一入递归深似海,从此offer是路人 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

今天我們來總結二叉樹的前中后序以及層次遍歷的遞歸與非遞歸的寫法。我們都知道二叉樹遍歷的遞歸寫法很簡單,但是面試的時候面試官往往考察的不是我們遞歸的寫法,他們滿懷期待你寫出非遞歸的解法,而當你只會寫遞歸方法時,offer已經與你漸行漸遠了。

下面先一起來看一下二叉樹各種遍歷的順序:

前序遍歷:根結點 —> 左子樹 —> 右子樹(先遍歷根節點,然后左右)
這棵樹的前序遍歷為:ABDEGHCF

中序遍歷:左子樹—> 根結點 —> 右子樹(在中間遍歷根節點)
這棵樹的中序遍歷為:DBGEHACF

后序遍歷:左子樹 —> 右子樹 —> 根結點(最后遍歷根節點)
這棵樹的后序遍歷為:DGHEBFCA

層次遍歷:按層次遍歷
這棵樹的層次遍歷為:ABCDEFGH

ps: 所謂的前序、中序、后續,就是對根節點而言的,左右的遍歷順序不變,前序就是根節點最先遍歷,然后左右;中序就是把根節點放在中間遍歷;后序則是把根節點放在最后遍歷。

https://blog.csdn.net/qq_42651904/article/details/90288715

文章目錄

  • 前言
  • 一、前序遍歷
    • 1.遞歸解法
    • 2.非遞歸方法(棧)
  • 二、中序遍歷
    • 1.遞歸解法
    • 2.非遞歸方法(棧)
  • 三、后序遍歷
    • 1.遞歸解法
    • 2.非遞歸方法(棧)
  • 四、層次遍歷
    • 1.非遞歸解法(隊列)
  • 總結

一、前序遍歷

1.遞歸解法

代碼如下:

class

2.非遞歸方法(棧)

前序遍歷是中左右,每次先處理的是中間節點,先將跟節點放入棧中,然后將右孩子加入棧,再加入左孩子。(因為棧的特性是先入后出,所以要先加入右孩子,再加入左孩子)

代碼如下:

class

二、中序遍歷

1.遞歸解法

代碼如下:

class

2.非遞歸方法(棧)

中序遍歷是左中右,每次先從根節點開始,一直遍歷左子節點,并在遍歷過程中將其入棧,然后取出棧頂元素,再指向右孩子。

代碼如下:

class

三、后序遍歷

1.遞歸解法

代碼如下:

class

2.非遞歸方法(棧)

后序遍歷是左右中,而先序遍歷是中左右,那么我們只需要調整一下先序遍歷的代碼順序(棧內先入左孩子,再入右孩子:這樣出棧為“右左中”),最后反轉res數組(得到“左中右”)。

代碼如下:

class

四、層次遍歷

1.非遞歸解法(隊列)

層次遍歷算法思想:
用一個隊列保存被訪問的當前節點的左右孩子以實現層次遍歷。
在進行層次遍歷的時候,設置一個隊列結構,遍歷從二叉樹的根節點開始,首先將根節點指針入隊列,然后從隊頭取出一個元素,每取一個元素,執行下面兩個操作:

  • 訪問該元素所指向的節點
  • 若該元素所指節點的左右孩子節點非空,則將該元素所指節點的左孩子指針和右孩子指針順序入隊。此過程不斷進行,當隊列為空時,二叉樹的層次遍歷結束
  • 代碼如下:

    class

    總結

    以上就是二叉樹前中后以及層次遍歷的遞歸與非遞歸寫法了,喜歡的就點個贊同和關注吧!!!

    總結

    以上是生活随笔為你收集整理的创建的二叉树后续非递归遍历结果为_一入递归深似海,从此offer是路人的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。