Advertisement
HXXXXJ

426. Convert Binary Search Tree to Sorted Doubly Linked List

Mar 24th, 2019
230
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 0.71 KB | None | 0 0
  1. func TreeNodeToDoubleList(_ root: Node?) -> Node?{
  2.     guard let root = root else { return nil}
  3.     var stack = [Node]()
  4.     pushLeft(root, &stack)
  5.    
  6.     var pre : Node?
  7.     var head: Node?
  8.     while stack.count > 0{
  9.         let cur = stack.removelAST()
  10.         if let right = cur.right {
  11.             pushLeft(right, &stack)
  12.         }
  13.         if pre == nil {
  14.             head = cur
  15.         }else {
  16.             pre.right = cur
  17.             cur.left = pre
  18.         }
  19.         pre = cur
  20.     }
  21.     //最后这个是为了把整体的头尾链成环
  22.     if let head = head {
  23.         head.right = pre
  24.         pre!.left = head
  25.     }
  26.     return head
  27. }  
  28.  
  29. func pushLeft(_ root: Node, _ stack : inout [Node]) {
  30.     stack.append(root)
  31.     var runner = root
  32.     while runner.left != nil{
  33.         stack.append(runner.left!)
  34.         runner = runner.left
  35.     }
  36. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement