1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72  // @Title: 二叉树展开为链表 (Flatten Binary Tree to Linked List) // @Author: 15816537946@163.com // @Date: 2019-09-14 21:11:47 // @Runtime: 0 ms // @Memory: 6.4 MB /* * @lc app=leetcode.cn id=114 lang=golang * * [114] 二叉树展开为链表 * * https://leetcode-cn.com/problems/flatten-binary-tree-to-linked-list/description/ * * algorithms * Medium (64.91%) * Likes: 173 * Dislikes: 0 * Total Accepted: 13.6K * Total Submissions: 21K * Testcase Example: '[1,2,5,3,4,null,6]' * * 给定一个二叉树，原地将它展开为链表。 * * 例如，给定二叉树 * * ⁠ 1 * ⁠ / \ * ⁠ 2 5 * ⁠/ \ \ * 3 4 6 * * 将其展开为： * * 1 * ⁠\ * ⁠ 2 * ⁠ \ * ⁠ 3 * ⁠ \ * ⁠ 4 * ⁠ \ * ⁠ 5 * ⁠ \ * ⁠ 6 * */ /** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */ // var prev *TreeNode func flatten(root *TreeNode) { if root == nil { return } flatten(root.Right) flatten(root.Left) tmp := root.Right root.Right, root.Left = root.Left, nil for root.Right != nil { // if root.Right != nil { root = root.Right } root.Right = tmp }