LeetCode 114. Flatten Binary Tree to Linked List
阿新 • • 發佈:2022-04-09
LeetCode 114. Flatten Binary Tree to Linked List (二叉樹展開為連結串列)
題目
連結
https://leetcode-cn.com/problems/flatten-binary-tree-to-linked-list/
問題描述
給你二叉樹的根結點 root ,請你將它展開為一個單鏈表:
展開後的單鏈表應該同樣使用 TreeNode ,其中 right 子指標指向連結串列中下一個結點,而左子指標始終為 null 。
展開後的單鏈表應該與二叉樹 先序遍歷 順序相同。
示例
輸入:root = [1,2,5,3,4,null,6]
輸出:[1,null,2,null,3,null,4,null,5,null,6]
提示
樹中結點數在範圍 [0, 2000] 內
-100 <= Node.val <= 100
思路
同樣是遞迴思路,左右子樹先變成連結串列,然後在處理根節點,中間可以設定臨時節點方便計算。
複雜度分析
時間複雜度 O(n)
空間複雜度 O(n)
程式碼
Java
public void flatten(TreeNode root) { if (root == null) { return; } flatten(root.left); flatten(root.right); TreeNode left = root.left; TreeNode right = root.right; root.left = null; root.right = left; TreeNode o = root; while (o.right != null) { o = o.right; } o.right = right; }