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