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

二叉搜索树与双向链表

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;//返回中序遍历的一个节点指针
}

全部评论

相关推荐

白火同学:先说结论,对于一份实习简历来说,整体还是挺不错的,技术深度和广度都到位,找到一份中小厂的实习没啥问题。 再说说能优化的点吧。 1、量化结果,项目中很多工作量化一下结果给面试官的感受会更直观一些,也能体现你对应用该项技术的理解(在众多技术为什么要用它,运行性能或者说开发效率往往是一大考虑指标;而不是说大家做这种功能都用它,所以我用它)。 2、突出亮点,项目中可以从“工作职责”择一些“个人亮点”另写一块,优先去写开发过程中遇到的xx问题,使用xx技术达到xx效果,针对性去写一些疑杂难的功能,能带出你个人思考和解决的过程。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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