Advertisement
Guest User

Untitled

a guest
Jun 15th, 2019
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.95 KB | None | 0 0
  1. func mergeBinaryTrees(node1: TreeNode?, node2: TreeNode?) -> TreeNode? {
  2.  
  3. if (node1 == null) return node2
  4. if (node2 == null) return node1
  5.  
  6. var stack1 = [TreeNode?]()
  7. var stack2 = [TreeNode?]()
  8.  
  9. stack1.append(node1)
  10. stack2.append(node2)
  11.  
  12. while !stack1.isEmpty || !stack2.isEmpty {
  13. let curr1: TreeNode! = stack1.popLast()!
  14. let curr2: TreeNode! = stack2.popLast()!
  15. let dummy = curr1
  16. dummy?.value = curr1.value + curr2.value
  17.  
  18. if curr1.left == nil || curr2.left == nil {
  19. dummy?.left = curr1.left == nil ? curr2.left : curr1.left
  20. } else if curr1.left != nil && curr2.left != nil {
  21. stack1.append(curr1.left)
  22. stack2.append(curr2.left)
  23. }
  24.  
  25. if curr1.right == nil || curr2.right == nil {
  26. dummy?.right = curr1.right == nil ? curr2.right : curr1.right
  27. } else if curr1.right != nil && curr2.right != nil {
  28. stack1.append(curr1.right)
  29. stack2.append(curr2.right)
  30. }
  31. }
  32. return node1
  33. }
  34.  
  35. let node4 = TreeNode(value: 4, left: nil, right: nil)
  36. let node5 = TreeNode(value: 5, left: nil, right: nil)
  37. let node6 = TreeNode(value: 6, left: nil, right: nil)
  38. let node2 = TreeNode(value: 2, left: node4, right: node5)
  39. let node3 = TreeNode(value: 3, left: nil, right: node6)
  40. let node1 = TreeNode(value: 1, left: node2, right: node3)
  41.  
  42. let node3b = TreeNode(value: 3, left: nil, right: nil)
  43. let node2b = TreeNode(value: 2, left: nil, right: nil)
  44. let node6b = TreeNode(value: 6, left: nil, right: nil)
  45. let node1b = TreeNode(value: 1, left: node3b, right: nil)
  46. let node7 = TreeNode(value: 7, left: node2b, right: node6b)
  47. let node4b = TreeNode(value: 4, left: node1b, right: node7)
  48.  
  49. let node = mergeBinaryTrees(node1: node1, node2: node4b)
  50.  
  51. func inorder(node: TreeNode?) {
  52. if node == nil {
  53. return
  54. }
  55.  
  56. inorder(node: node?.left)
  57. print(node?.value)
  58. inorder(node: node?.right)
  59. }
  60.  
  61. inorder(node: node)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement