Advertisement
HXXXXJ

114. Flatten Binary Tree to Linked List

Apr 11th, 2019
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 0.89 KB | None | 0 0
  1. func flatten(_ root: TreeNode?) {
  2.         guard let root = root else {
  3.             return
  4.         }
  5.         flattenHelper(root)
  6.     }
  7.    
  8.    
  9.     func flattenHelper(_ node : TreeNode) -> (TreeNode, TreeNode){
  10.         if node.left == nil && node.right == nil {
  11.              return (node, node)
  12.         }
  13.         if node.left == nil {
  14.             let rigthtRes = flattenHelper(node.right!)
  15.             return (node, rigthtRes.1)
  16.         }
  17.         if node.right == nil {
  18.             let leftRes = flattenHelper(node.left!)
  19.             node.left = nil
  20.             node.right = leftRes.0
  21.             return (node, leftRes.1)
  22.         }
  23.        
  24.         let leftRes = flattenHelper(node.left!)
  25.         let rigthtRes = flattenHelper(node.right!)
  26.         node.left = nil
  27.         node.right = leftRes.0
  28.         leftRes.1.right = rigthtRes.0
  29.         return (node, rigthtRes.1)
  30.        
  31.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement