编号是i的结点所在的层次号是_九章算法 | 微软面试题:二叉树的锯齿形层次遍历...
生活随笔
收集整理的這篇文章主要介紹了
编号是i的结点所在的层次号是_九章算法 | 微软面试题:二叉树的锯齿形层次遍历...
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
給出一棵二叉樹,返回其節點值的鋸齒形層次遍歷(先從左往右,下一層再從右往左,層與層之間交替進行)
在線評測地址:LintCode 領扣
樣例 1:
輸入:{1,2,3} 輸出:[[1],[3,2]] 解釋:1/ 2 3 它將被序列化為 {1,2,3}樣例 2:
輸入:{3,9,20,#,#,15,7} 輸出:[[3],[20,9],[15,7]] 解釋:3/ 9 20/ 15 7 它將被序列化為 {3,9,20,#,#,15,7}【題解】
算法:樹的層次遍歷
層次遍歷,可以運用廣度遍歷的思想實現從上往下的逐層遍歷。從頭結點開始逐層遍歷,開辟一個新隊列,讓頭結點入隊并計算此時的長度,每次都將當前層的子節點全部壓入隊列,然后對下一層的節點進行遍歷,再將下一層的子節點壓入隊列,不斷循環,一直遍歷到底層,判斷的終止條件就是隊列不為空。
- 循環里面,隊列頭出隊,判斷其是否有左右子結點,如果有,則將此點的子節點入隊,但此時還不需要更新隊列的長度,當前隊列的長度是每層的長度。當這層的長度減為0時,就說明這層的遍歷結束,開始更新長度為下一層的長度。
- 出隊的元素的值按照一層層壓入結果數組
- 因為題目鋸齒形遍歷
- 我們用一個isforward標記當前方向,每遍歷完一層,如果是反向的,則將這層的節點數組倒序,然后將這層的集合壓入結果
復雜度分析
- 時間復雜度O(n)
- n為節點數量
- 空間復雜度O(n)
- 存下所有點的信息 n為節點數量
更多題解參見:九章算法
總結
以上是生活随笔為你收集整理的编号是i的结点所在的层次号是_九章算法 | 微软面试题:二叉树的锯齿形层次遍历...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 千锋教育python全集_千锋pytho
- 下一篇: 软件测试和python那个号_软件测试: