1. 程式人生 > 其它 >LeetCode 114. Flatten Binary Tree to Linked List

LeetCode 114. Flatten Binary Tree to Linked List

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;
    }