LeetCode N叉樹的前序遍歷

2021-08-28 23:52:46 字數 733 閱讀 4052

所以這裡在最初的時候即使是二叉樹也不能像之前寫的那樣直接輸出,如果在函式首部定義乙個vector每次遞迴都會重新建立,裡邊的資料儲存不下來,我也想過定義乙個全域性變數,但是這樣也不妥,這樣的話返回值返回什麼。

class node 

node(int _val, vector_children)

};class solution

void preorder(node* root, vector& ret) }

};

之後就另外建立了乙個函式,這個函式是可以傳乙個vector引用進去的,這樣就很好的解決了這個問題。這裡也是以前都是訪問左然後訪問右,但是這裡需要通過迴圈去依次訪問。

同樣遞迴的遍歷是很簡單一種情況,那非遞迴怎麼實現,還是和二叉樹一樣,不過是比二叉樹多處理了幾次而已。

class solution 

} return ret;

}};

通過建立乙個棧,來儲存資料。但是這裡需要注意的是

for (i = length-1; i >= 0; i--)

這裡去訪問孩子結點的時候是倒著訪問陣列的因為我們建立的是乙個棧,棧是先進後出的,為了先在棧頂訪問到下標為0的孩子結點,就需要最後讓他入棧。

LeetCode N叉樹的前序遍歷(遞迴 遞推)

給定乙個 n 叉樹,返回其節點值的前序遍歷。例如,給定乙個 3叉樹 返回其前序遍歷 1,3,5,6,2,4 說明 遞迴法很簡單,你可以使用迭代法完成此題嗎?思路分析 和二叉樹的前序遍歷思想一致,先訪問根節點,在訪問子節點。請先翻閱 leetcode 二叉樹的前序遍歷 遞迴 遞推 definition...

LeetCode N叉樹的深度

給定乙個 n 叉樹,找到其最大深度。最大深度是指從根節點到最遠葉子節點的最長路徑上的節點總數。例如,給定乙個 3叉樹 說明 樹的深度不會超過 1000。樹的節點總不會超過 5000。思路分析 樹最大深度 最大的子樹深度 1.definition for a node.class node node ...

LeetCode N叉樹遍歷 11 29Cold

1.589n叉樹的前序遍歷 32674.0 簡單法一 佇列,迭代 注意 queue.length,不能以 queue判空陣列 var preorder function root return res 用到佇列和concat,因為題給的是children,如果二叉樹就不能用 法二 foreach遞迴...