題目
給你二叉樹的根結點?
root
?,請你將它展開為一個單鏈表:
- 展開后的單鏈表應該同樣使用?
TreeNode
?,其中?right
?子指針指向鏈表中下一個結點,而左子指針始終為?null
?。- 展開后的單鏈表應該與二叉樹?先序遍歷?順序相同。
解題思路
- 通過遞歸先序遍歷樹;
- 用List存儲遍歷后的結點;
- 遍歷List重組鏈表。
代碼展示
class Solution {private List<TreeNode> list = new ArrayList<>();public void flatten(TreeNode root) {if(root == null){return;}nextNode(root);root = list.get(0);TreeNode temp = root;for (int i = 1; i < list.size(); i++){temp.left = null;temp.right = list.get(i);temp = temp.right;}System.out.println(123);}public void nextNode(TreeNode root){if(root == null){return;}list.add(root);nextNode(root.left);nextNode(root.right);}
}