給定乙個 n 叉樹,返回其節點值的前序遍歷 。
n 叉樹 在輸入中按層序遍歷進行序列化表示,每組子節點由空值null
分隔(請參見示例)。
示例1
輸入:root = [1,null,3,2,4,null,5,6]輸入:root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]輸出:[1,3,5,6,2,4]
示例2:
輸出:[1,2,3,6,7,11,14,4,8,12,5,9,13,10]
對於二叉樹遍歷問題我們用最簡單,最暴力的方法就是遞迴,如果只是ac的話,遞迴完全可以,如果面試的話,面試官可能會讓你寫出非遞迴遍歷,接下來會分別介紹這兩種方法,
遞迴思路:對於二叉樹來說,前序遍歷就是先輸出根節點,再輸出左節點,再輸出右節點,根據這個思路我們可以寫出對於n叉樹的前序遍歷方法
1、先輸出根節點
2、遍歷根節點的孩子節點,
3、重複步驟1
public listpreorder(node root)非遞迴:同樣的先想哈二叉樹非遞迴的思路,它需要結合棧來實現,我們都知道棧是先進後出的結構,而前序遍歷的順序是根節點,左孩子,右孩子,那麼入棧順序就是將根節點的左右孩子按右孩子、左孩子的順序入棧,最後再出棧就是前序遍歷的結果。根據這個思路我們可以寫出對於n叉樹前序遍歷的非遞迴方法public
void digui(node root,listresult)
}
首先將根節點入棧
1,判斷棧是否為空,不為空就出棧
2、再將他的孩子節點從右節點到左節點入棧
3、重複1
public listpreorder(node root)}return
result;
}
N叉樹的前序遍歷
題目 n叉樹的前序遍歷 力扣 589 給定乙個 n 叉樹,返回其節點值的前序遍歷。分析兩種方式實現 遞迴 遞迴非常簡單即可實現。優先輸出當前節點,然後遍歷孩子節點,最後返回結果即可。迭代 通過棧來輔助實現,先將當前點入棧,當棧不為空時,優先將節點值新增到結果中 然後遍歷當前節點的孩子節點,這裡需要注...
多叉樹的前序遍歷 589 N叉樹的前序遍歷
給定乙個 n 叉樹,返回其節點值的前序遍歷。n叉樹的定義如下 class node node int val,vector children val val children children 例如給定乙個 3叉樹 3 2 4 5 6返回其前序遍歷 1,3,5,6,2,4 說明 遞迴法很簡單,你可以...
589 N叉樹的前序遍歷
遞迴法 if root none return res for leaf in root.children res self.preorder leaf return root.val res 此處加法先後順序決定了是進行先序還是後序 迭代法 if root none return queue re...