/*
*@Author:lwl
*@Date:2019-12-08
*@Description:牛客网二叉搜索树转有序双向链表
* 技巧:递归中序遍历 + 记住前一个节点
*/
class Solution {
public:
TreeNode* preNode = NULL;
TreeNode* res = NULL;
void Process(TreeNode* pRootOfTree) {
if (pRootOfTree == NULL) {
return;
}
Process(pRootOfTree->left);
if (preNode == NULL) {
pRootOfTree->left = NULL;
res = pRootOfTree;
}
else {
pRootOfTree->left = preNode;
preNode->right = pRootOfTree;
}
preNode = pRootOfTree;
Process(pRootOfTree->right);
}
TreeNode* Convert(TreeNode* pRootOfTree){
if (pRootOfTree != NULL) {
Process(pRootOfTree);
}
return res;
}
};
二叉搜索树转有序双向链表(牛客)
最新推荐文章于 2022-06-22 10:45:29 发布