package main
import . "nc_tools"
/*
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
/**
*
* @param pRootOfTree TreeNode类
* @return TreeNode类
*/
func Convert( pRootOfTree *TreeNode ) *TreeNode {
root := pRootOfTree
if root == nil {
return nil
}
//记录上一个节点
var preNode *TreeNode
//获取双向链表头部
head := root
for head.Left != nil {
head = head.Left
}
//中序遍历
var dfs func(node *TreeNode)
dfs = func(node *TreeNode) {
if node == nil {
return
}
dfs(node.Left)
node.Left = preNode
if preNode != nil {
preNode.Right = node
}
preNode = node
dfs(node.Right)
}
dfs(root)
return head
}