题解 | NO.30#二叉搜索树与双向链表#3.11
二叉搜索树与双向链表
https://www.nowcoder.com/practice/947f6eb80d944a84850b0538bf0ec3a5
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
/**
*
* @param pRootOfTree TreeNode类
* @return TreeNode类
*/
//递归中序遍历
static struct TreeNode* pre = NULL; //静态全局变量
static struct TreeNode* head = NULL;
struct TreeNode* Convert(struct TreeNode* pRootOfTree ) {
if(pRootOfTree == NULL)
return NULL;
Convert(pRootOfTree->left);
if(pre == NULL){
head = pRootOfTree;
pre = pRootOfTree;
}else{ //将当前节点和前驱结点连接
pre->right = pRootOfTree;
pRootOfTree->left = pre;
pre = pRootOfTree; //更新前驱节点
}
Convert(pRootOfTree->right);
return head;
}
//Q:为什么要用静态全局变量?单纯的全局变量通不过编译,疑惑
