Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- func inorderSuccessor(_ root: TreeNode?, _ p: TreeNode?) -> TreeNode? {
- guard let root = root else {return nil}
- guard let p = p else {return nil}
- var runner = root
- var stack = [TreeNode]()
- stack.append(root)
- while runner.left != nil{
- stack.append(runner.left!)
- runner = runner.left!
- }
- while stack.count > 0{
- let cur = stack.removeLast()
- if cur.right != nil{
- stack.append(cur.right!)
- runner = cur.right!
- while runner.left != nil{
- stack.append(runner.left!)
- runner = runner.left!
- }
- }
- //检查当前的如果就是P, 那么下一轮的那个node就是successor
- if cur === p {
- return stack.removeLast()
- }
- }
- return nil
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement