二叉树与链表

58 阅读1分钟

题目一:二叉树展开为链表

按照前序的顺序将二叉树展开为链表。考虑将右子树放在左子树的最右侧节点下,沿着左节点依次展开。

// 114. 二叉树展开为链表
func flatten(root *TreeNode) {
   for root != nil {
      if root.Left != nil {
         pre := root.Left
         for pre.Right != nil {
            pre = pre.Right
         }
         pre.Right = root.Right
         root.Right = root.Left
         root.Left = nil
      }
      root = root.Right
   }
}

时间复杂度:O(S),空间复杂度O(1)