溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

golang刷leetcode 技巧之如何實現特定深度節點鏈表

發布時間:2021-12-16 09:27:29 來源:億速云 閱讀:181 作者:小新 欄目:大數據

這篇文章主要為大家展示了“golang刷leetcode 技巧之如何實現特定深度節點鏈表”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“golang刷leetcode 技巧之如何實現特定深度節點鏈表”這篇文章吧。

給定一棵二叉樹,設計一個算法,創建含有某一深度上所有節點的鏈表(比如,若一棵樹的深度為 D,則會創建出 D 個鏈表)。返回一個包含所有深度的鏈表的數組。

示例:

輸入:[1,2,3,4,5,null,7,8]

        1

       /  \ 

      2    3

     / \    \ 

    4   5    7

   /

  8

輸出:[[1],[2,3],[4,5,7],[8]]

解題思路

1,這是一道樹的層序遍歷+鏈表的組合題,主要考察樹、隊列、鏈表的理解、以及這幾種數據結構的綜合應用。

2,樹的層序遍歷,需要借助隊列,對于每一層都分開需要借助兩個隊列

3,遍歷的時候,我們將q1 這一層的每一個節點依次彈出,放入鏈表

4,將每一個節點的左右孩子依次存入q2

5,將q2存入q1

6,重復3~5,直到每個隊列都為空為止。

代碼實現

/** * Definition for a binary tree node. * type TreeNode struct { *     Val int *     Left *TreeNode *     Right *TreeNode * } *//** * Definition for singly-linked list. * type ListNode struct { *     Val int *     Next *ListNode * } */func listOfDepth(tree *TreeNode) []*ListNode {    var q1,q2 queue    if tree==nil{        return nil    }     var r []*ListNode    q1.push(tree)    head:=new(ListNode)    for !q1.empty() || !q2.empty(){        cur:=head        for !q1.empty(){            x:=q1.pop()            if x.Left!=nil{                q2.push(x.Left)            }            if x.Right!=nil{                q2.push(x.Right)            }            cur.Next=&ListNode{              Val:x.Val,            }            cur=cur.Next        }        r=append(r,head.Next)        head.Next=nil        for !q2.empty(){            q1.push(q2.pop())        }    }    return r}
type queue struct{    data []*TreeNode}
func(this*queue)push(t*TreeNode){   this.data=append(this.data,t)}
func (this*queue)empty()bool{    return len(this.data)<1}
func (this*queue)pop()*TreeNode{    if this.empty(){        return nil    }    x:=this.data[0]    this.data=this.data[1:]    return x}

以上是“golang刷leetcode 技巧之如何實現特定深度節點鏈表”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女