N 叉樹的前序遍歷

2022-06-26 12:33:11 字數 1062 閱讀 1279

給定乙個 n 叉樹,返回其節點值的前序遍歷 。

n 叉樹 在輸入中按層序遍歷進行序列化表示,每組子節點由空值null分隔(請參見示例)。

示例1

輸入:root = [1,null,3,2,4,null,5,6]

輸出:[1,3,5,6,2,4]

示例2:

輸入: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,2,3,6,7,11,14,4,8,12,5,9,13,10]

對於二叉樹遍歷問題我們用最簡單,最暴力的方法就是遞迴,如果只是ac的話,遞迴完全可以,如果面試的話,面試官可能會讓你寫出非遞迴遍歷,接下來會分別介紹這兩種方法,

遞迴思路:對於二叉樹來說,前序遍歷就是先輸出根節點,再輸出左節點,再輸出右節點,根據這個思路我們可以寫出對於n叉樹的前序遍歷方法

1、先輸出根節點

2、遍歷根節點的孩子節點,

3、重複步驟1

public listpreorder(node root) 

public

void digui(node root,listresult)

}

非遞迴:同樣的先想哈二叉樹非遞迴的思路,它需要結合棧來實現,我們都知道棧是先進後出的結構,而前序遍歷的順序是根節點,左孩子,右孩子,那麼入棧順序就是將根節點的左右孩子按右孩子、左孩子的順序入棧,最後再出棧就是前序遍歷的結果。根據這個思路我們可以寫出對於n叉樹前序遍歷的非遞迴方法

首先將根節點入棧

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...