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 }