博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【重点】剑指offer——面试题27:二叉搜索树与双向链表
阅读量:2254 次
发布时间:2019-05-09

本文共 1176 字,大约阅读时间需要 3 分钟。

剑指offer——面试题27:二叉搜索树与双向链表

Solution1:

这是书上的代码,要理解好最近几道题,对指针的操作比较多。。。

class Solution {public:    TreeNode* Convert(TreeNode* pRootOfTree) {        TreeNode *pLastNodeInList = NULL;        ConvertNode(pRootOfTree, pLastNodeInList);        //pLastNodeInList指向双链表的尾结点        //返回头结点        TreeNode *pHeadOfList = pLastNodeInList;        while(pHeadOfList && pHeadOfList->left)            pHeadOfList = pHeadOfList->left;        return pHeadOfList;    }    void ConvertNode(TreeNode* pNode, TreeNode *&pLastNodeInList){ //第二个参数是指针的引用        if(!pNode)            return;        TreeNode *pCurrent = pNode;  //pNode目前指向的根结点,把pCurrent初始化为指向此根节点        if(pCurrent->left)   //如果根结点的左子树非空,则去处理左子树            ConvertNode(pCurrent->left, pLastNodeInList);        pCurrent->left = pLastNodeInList;//把左子树中值最大的结点的位置赋值给当前根结点的左指针        if(pLastNodeInList)            pLastNodeInList->right = pCurrent;//相应的根结点的位置赋给左子树中值最大结点的右指针                                              //经过这两步就把当前的根结点串到双向链表中了        pLastNodeInList = pCurrent;           //所以,这一步就更新链表中尾结点的位置,设为当前根结点的位置        if(pCurrent->right)           //右子树非空,处理右子树去。。            ConvertNode(pCurrent->right,pLastNodeInList);    }};

转载地址:http://nxhdb.baihongyu.com/

你可能感兴趣的文章
MySLQ存储结构 innodb 段 区 页
查看>>
踢掉一个远程登录用户
查看>>
MySQL group by的sql_mode报错
查看>>
联合索引应用细节
查看>>
Nginx地址重定向 return rewrite if
查看>>
PHP安装Redis模块
查看>>
PHP追加安装时候忘装的模块
查看>>
PHP平滑升级
查看>>
MySQL删除无用账户
查看>>
MySQL多实例配置方案
查看>>
MySQL设置及修改root密码
查看>>
MySQL忘记密码重置管理员密码
查看>>
MySQL创建及授权账号
查看>>
MySQL库的基本操作
查看>>
MySQL表的基本操作
查看>>
MySQL数据类型
查看>>
MySQL SQL语句最常见的分类
查看>>
MySQL用户权限
查看>>
MySQL数据备份
查看>>
MySQL使用explain检查索引执行计划
查看>>