美文网首页
114. 二叉树展开为链表

114. 二叉树展开为链表

作者: 寂灭天骄小童鞋 | 来源:发表于2020-03-22 23:13 被阅读0次

https://leetcode-cn.com/problems/flatten-binary-tree-to-linked-list/

//递归
func flatten(_ root: TreeNode?) {
    if root == nil {return}
    let oldRightNode = root?.right
    root?.right = root?.left
    root?.left = nil
    var rightMost = root
    while rightMost?.right != nil {
        rightMost = rightMost?.right
    }
    rightMost?.right = oldRightNode
    flatten(root?.right)
}

//非递归
func flatten(_ root: TreeNode?) {
    if root == nil {return}
    var mulRoot = root
    while mulRoot != nil {
        if mulRoot!.left != nil {
            let oldRightNode = mulRoot?.right
            mulRoot?.right = mulRoot?.left
            mulRoot?.left = nil
            var rightMost = mulRoot
            while rightMost?.right != nil {
                rightMost = rightMost?.right
            }
            rightMost?.right = oldRightNode
        }
        mulRoot = mulRoot?.right
    }
}

相关文章

网友评论

      本文标题:114. 二叉树展开为链表

      本文链接:https://www.haomeiwen.com/subject/qadbyhtx.html