题解 | #二叉搜索树与双向链表#
二叉搜索树与双向链表
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
}
