题解 | #二叉搜索树与双向链表#

二叉搜索树与双向链表

https://www.nowcoder.com/practice/947f6eb80d944a84850b0538bf0ec3a5

package main

import (
	. "nc_tools"
)

/*
 * type TreeNode struct {
 *   Val int
 *   Left *TreeNode
 *   Right *TreeNode
 * }
 */

/**
 *
 * @param pRootOfTree TreeNode类
 * @return TreeNode类
 */
func Convert( pRootOfTree *TreeNode ) *TreeNode {
    // write code here
    // 中序遍历
    if pRootOfTree == nil {
        return nil 
    }
    dummy := &TreeNode{}
    prev := dummy
    var inorderConvert func(node *TreeNode)
    inorderConvert = func(node *TreeNode){
        if node == nil {
            return
        }
        // 因为每次都是先向Left进行遍历,因此prev为left 比如6left为4
        inorderConvert(node.Left)
        prev.Right = node
        node.Left = prev
        prev = node
        inorderConvert(node.Right)
    }
    inorderConvert(pRootOfTree)
    head := dummy.Right
    head.Left = nil 
    return head
}

全部评论

相关推荐

FieldMatching:看成了猪头顾问,不好意思
点赞 评论 收藏
分享
秋盈丶:后续:我在宿舍群里和大学同学分享了这事儿,我好兄弟气不过把他挂到某脉上了,10w+阅读量几百条评论,直接干成精品贴子,爽
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务