题解 | #二叉搜索树与双向链表#

二叉搜索树与双向链表

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;
//中序遍历
void mid(struct TreeNode* p ){
    if(!p){ //出口条件,节点为空
        return ;
    }
    mid(p->left);//遍历左结点
   
    p->left=pre;//前驱节点设为pre;
    if(pre!=NULL)
        pre->right=p;//后继节点设为p; !!!注意pre是一个指针,它指向p前面的那个节点
    pre=p;   
    mid(p->right);//遍历右结点
    
}
struct TreeNode* Convert(struct TreeNode* pRootOfTree ) {
    // write code here
    //struct TreeNode* pre = NULL;
    if (pRootOfTree != NULL) {
        mid(pRootOfTree);//中序遍历
        pre->right = NULL;//将最后一个节点的后继记为空
    }
    if (pRootOfTree)//判断节点非空
        while (pRootOfTree->left != NULL) {//一直遍历左结点直到为空
            pRootOfTree = pRootOfTree->left;
        }
    return pRootOfTree;//返回中序遍历的一个节点指针
}

全部评论

相关推荐

05-19 15:21
已编辑
华南农业大学 Java
白火同学:你才沟通了200,说实话,北上广深杭这里面你连一座城市的互联网公司都没投满呢,更别说还有各种准一线二线城市了。等你沟通突破了三位数,还没结果再考虑转行的事吧。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务