LeetCode 114 二叉樹展開為鍊錶

2021-10-17 15:16:33 字數 1248 閱讀 3818

114 二叉樹展開為鍊錶

1.將二叉樹展開成煉表是怎麼乙個過程

以形如此的二叉樹a為例:

1

/ \2 5

二叉樹a轉換成鍊錶的過程是:

1 1

/ \ -----> \

2 5 2

\5

2.定義函式flatten的功能

函式flatten的功能是把一棵二叉樹展開成乙個鍊錶

3.運用框架

對於乙個節點,把它的左子樹展開成乙個鍊錶,再把它的右子樹展開成乙個鍊錶,最後在對以該節點為根節點的樹展開成煉表。這是左右根的後序遍歷框架。

4.例子

1              1               1

/ \ / \ \

2 3 ----> 2 3 ----> 2

/ \ / \ \ \ \

4 5 6 7 4 6 4

\ \ \

5 7 5\3

\6

\7

class solution 

flatten(root->left); //把左子樹展開成煉表

flatten(root->right); //把右子樹展開成煉表

//記錄下根的左右子樹(左右子樹均已展開成煉表)

treenode* left = root->left;

treenode* right = root->right;

//對根節點進行操作

//1.將左子樹接到右子樹的位置

root->left = nullptr;

root->right = left;

//2.將原來的右子樹接到現在的右子樹下邊

treenode* node = root;

while(node->right != nullptr)

node->right = right;

}};

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 複製 這算是比較經典的一道題目了,博主面試快手的時候原題。最開始一想,覺得遞迴的求解不就好了,但是遞迴的時候發現需要注意乙個地方就是 需要先遞迴右子樹,然後記錄下右子樹展開完成之後...

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