leetcode [114]Flatten Binary Tree to Linked List
Given a binary tree, flatten it to a linked list in-place.
For example, given the following tree:
1/ \2 5/ \ \ 3 4 6The flattened tree should look like:
1\2\3\4\5\6題目大意:
將一個(gè)二叉樹(shù)變?yōu)橐粋€(gè)鏈表
解法:
這道題目輸出結(jié)果就是采用前序遍歷二叉樹(shù)的結(jié)果,將這個(gè)結(jié)果變?yōu)橐粋€(gè)雙向鏈表。但是題目的要求是在原數(shù)據(jù)結(jié)構(gòu)上進(jìn)行改變,而不是采用前序遍歷的結(jié)果新建一個(gè)鏈表。這道題目劍指offer上面也有,做過(guò)很多次,但是記不得,最討厭做樹(shù)相關(guān)的題目了。
參考了一下網(wǎng)上的解法,看起來(lái)還是很容易理解的,就是將左右子樹(shù)遞歸的變成鏈表,再和當(dāng)前節(jié)點(diǎn)相連接。但是感覺(jué)自己很難想出來(lái)。
解法主要是下面三步:
1.將左子樹(shù)轉(zhuǎn)換成鏈表
2.將右子樹(shù)轉(zhuǎn)換成鏈表
3.將當(dāng)前節(jié)點(diǎn)的左指針指向空,右節(jié)點(diǎn)指向leftList.head,然后將leftList.end指向rightList.head。
java:
class Solution {public void flatten(TreeNode root) {if(root==null) return;TreeNode left=root.left;TreeNode right=root.right;flatten(left);flatten(right);root.left=null;root.right=left;TreeNode cur=root;while(cur.right!=null) cur=cur.right;cur.right=right;} }?
轉(zhuǎn)載于:https://www.cnblogs.com/xiaobaituyun/p/10705707.html
總結(jié)
以上是生活随笔為你收集整理的leetcode [114]Flatten Binary Tree to Linked List的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 温氏股份什么时候分红?
- 下一篇: Visual Studio 2015 安