十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
二叉搜索树的中序遍历即是有序的,中序遍历同时转变即可,
转换左子树,左子树最右边,为左子树有序的最后一个节点为lastnode,
root->left=lastnode
如果lastnode非空,lastnode->right=root;
右树非空,转换之。
最后,原根节点指向的是序列中间,需要返回链表头,可以往前遍历即可。
void ConvertCore(TreeNode *root,TreeNode *&lastnode){
if(root==NULL)
return;
if(root->left)
ConvertCore(root->left,lastnode);
root->left=lastnode;
if(lastnode!=NULL)
lastnode->right=root;
lastnode=root;
if(root->right)
ConvertCore(root->right,lastnode);
}
TreeNode* Convert(TreeNode* pRootOfTree)
{
if(pRootOfTree==NULL)
return NULL;
TreeNode *lastnode=NULL;
ConvertCore(pRootOfTree,lastnode);
while(lastnode->left){
lastnode=lastnode->left;
}
return lastnode;
}
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。