[Swift]LeetCode156.二叉树的上下颠倒 $ Binary Tree Upside Down
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/10060377.html
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
Given a binary tree where all the right nodes are either leaf nodes with a sibling (a left node that shares the same parent node) or empty, flip it upside down and turn it into a tree where the original right nodes turned into left leaf nodes. Return the new root.
For example: Given a binary tree {1,2,3,4,5},
1
/ \
2 3
/ \
4 5
return the root of the binary tree [4,5,2,#,#,3,1].
4
/ \
5 2
/ \
3 1
给定一个二叉树,其中所有右节点要么是具有兄弟节点的叶节点(共享同一父节点的左节点),要么是空的,将其颠倒并将其转换为树,其中原始右节点转换为左叶节点。返回新根。
例如:给定二叉树{1,2,3,4,5 },
1
/ \
2 3
/ \
4 5
返回二叉树的根 [4,5,2,#,#,3,1].
4
/ \
5 2
/ \
3 1
Solution:
1 public class TreeNode { 2 public var val: Int 3 public var left: TreeNode? 4 public var right: TreeNode? 5 public init(_ val: Int) { 6 self.val = val 7 self.left = nil 8 self.right = nil 9 } 10 } 11 12 class Solution { 13 func upsideDownBinaryTree(_ root: TreeNode?) -> TreeNode? { 14 if root == nil || root!.left == nil {return root} 15 var l: TreeNode? = root!.left 16 var r: TreeNode? = root!.right 17 var res: TreeNode? = upsideDownBinaryTree(l) 18 l!.left = r 19 l!.right = root 20 root!.left = nil 21 root!.right = nil 22 return res 23 } 24 }