美文网首页
面试题 17.12. BiNode【二叉搜索树】【简单】【递归】

面试题 17.12. BiNode【二叉搜索树】【简单】【递归】

作者: 月下蓑衣江湖夜雨 | 来源:发表于2020-07-27 12:06 被阅读0次

    题目

    题目

    代码

    type TreeNode struct {
        Val int
        Left *TreeNode
        Right *TreeNode
    }
    
    func convertBiNode(root *TreeNode) *TreeNode {
        head, _ := dfs(root)
        return head
    }
    
    func dfs(root *TreeNode) (head, tail *TreeNode) {
        fmt.Printf("+++++++root is %v\n", root)
    
        // 递归停止条件
        if root == nil {
            return nil, nil
        }
    
        // 叶子节点
        if root.Left == nil && root.Right == nil {
            return root, root
        }
    
        lHead, lTail := dfs(root.Left)
        rHead, rTail  := dfs(root.Right)
    
        // 左子树为空
        if lHead != nil {
            head = lHead
            tail = lTail
            tail.Left = nil
            tail.Right = root
            tail = root
        } else {
            head = root
            tail = root
        }
    
        tail.Left = nil
        if rHead != nil {
            tail.Right = rHead
            tail = rTail
        }
    
        return
    }
    
    

    相关文章

      网友评论

          本文标题:面试题 17.12. BiNode【二叉搜索树】【简单】【递归】

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