Leetcode 114 二叉樹展開為鍊錶

2021-10-05 12:13:45 字數 996 閱讀 7095

遞迴

對於每乙個棵樹,root->right=flat(root->left), 然後flat(root->right)接在flat(root->left)的後面.

對於根空,左空,右空,左右都空四種情況都要考慮。不過右空可以併入左右都不空來解決。

class

solution

treenode*

flat

(treenode* root)

// if(root->right==null)

// treenode* rt=root-

>right;

root-

>right=

flat

(root-

>left)

; root-

>left=

null

; treenode* tmp=root-

>right;

while

(tmp!=

null

&&tmp-

>right!=

null

) tmp=tmp-

>right;

tmp-

>right=

flat

(rt)

;return root;}}

;

正向解法

如果左子樹根不為空,根節點右移。

如果左子樹根不為空,將右子樹挪到左子樹的右下方,再將整個左子樹移到右子樹上,左子樹清空,此時當前root到達正確位置,根右移一次,直到處理完畢。

class

solution

root=root-

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