Leetcode 114 二叉樹展開為鍊錶

2021-09-24 08:38:45 字數 571 閱讀 9738

給定乙個二叉樹,原地將它展開為鍊錶。

例如,給定二叉樹

1

/ \2 5

/ \ \

3 4 6

複製**

將其展開為:

1

\ 2\3

\4\5

\6

複製**

這算是比較經典的一道題目了, 博主面試快手的時候原題。最開始一想,覺得遞迴的求解不就好了,但是遞迴的時候發現需要注意乙個地方就是:需要先遞迴右子樹,然後記錄下右子樹展開完成之後的煉表頭。然後再遞迴的求解左子樹,把左子樹的最後乙個鏈到右子樹的煉表頭。基於這個,我們用乙個pre指標來記錄右子樹的頭結點。

class solution 

}複製**

遞迴的方式轉換為迭代的方式用stack就好了,反而比較好理解。

class solution 

}}複製**

有問題加手撕**qq群討論:805423079

leetcode114 二叉樹展開為鍊錶

給定乙個二叉樹,原地將它展開為鍊錶。先把左右展開,右放左最後,左放右,左置空 definition for a binary tree node.class treenode def init self,x self.val x self.left none self.right none clas...

leetcode 114 二叉樹展開為鍊錶

給定乙個二叉樹,原地將它展開為鍊錶。例如,給定二叉樹 1 2 5 3 4 6將其展開為 1 2 3 4 5 6採用二叉樹後序遍歷 python 如下 class treenode object def init self,x self.val x self.left none self.right ...

leetcode 114 二叉樹展開為鍊錶

給定乙個二叉樹,原地將它展開為鍊錶。例如,給定二叉樹 1 2 5 3 4 6將其展開為 1 2 3 4 5 6無腦版 前序遍歷二叉樹,然後再依次展開。時間複雜度是o n o n o n 空間複雜度也是o n 別人的思路 如果乙個節點有左子樹,就把右子樹掛到左子樹最右邊的節點右子樹上。時間複雜度同上,...