类似的再举一个例子:

题目:从上往下打印二叉树,何老师的代码如下(是没有问题的):

void PrintFromTopToBottom(BinaryTreeNode* pRoot)
{if(pRoot == nullptr)return;std::deque<BinaryTreeNode *> dequeTreeNode;dequeTreeNode.push_back(pRoot);while(dequeTreeNode.size()){BinaryTreeNode *pNode = dequeTreeNode.front();dequeTreeNode.pop_front();printf("%d ", pNode->m_nValue);if(pNode->m_pLeft)dequeTreeNode.push_back(pNode->m_pLeft);if(pNode->m_pRight)dequeTreeNode.push_back(pNode->m_pRight);}
}

deque::front返回值是引用(注:因为deque在堆上分配空间,所以可以返回引用。可参考:C++ 引用作为函数返回值)

但如将代码修改为:

void PrintFromTopToBottom(BinaryTreeNode* pRoot)
{if (pRoot == nullptr)return;std::deque<BinaryTreeNode *> dequeTreeNode;dequeTreeNode.push_back(pRoot);while (dequeTreeNode.size()){BinaryTreeNode *&pNode = dequeTreeNode.front(); // 指针的引用dequeTreeNode.pop_front();printf("%d ", pNode->m_nValue);if (pNode->m_pLeft)dequeTreeNode.push_back(pNode->m_pLeft);if (pNode->m_pRight)dequeTreeNode.push_back(pNode->m_pRight);}
}

因为pop_front()会析构,所以也会有问题,但可以修改为:

BinaryTreeNode *&pNode = dequeTreeNode.front(); // 指针的引用printf("%d ", pNode->m_nValue);
dequeTreeNode.pop_front();

即先输出再析构。或者像何老师的代码那样(重新定义一个指针变量pNode,而不是指针引用):

BinaryTreeNode *pNode = dequeTreeNode.front();
dequeTreeNode.pop_front();printf("%d ", pNode->m_nValue);

剑指offer纪念版 何海涛著 部分纠正相关推荐

  1. 【Book】剑指Offer -- By 何海涛

    名企面试官精讲典型编程题 Comments Contents Chap 1. 面试的流程 应聘者简历中如何介绍自己的项目? 按照 STAR 模型来描述项目 Situation : 简短的项目背景 Ta ...

  2. 何海涛——《剑指Offer:名企面试官精讲典型编程题》一书中IT名企经典面试题

    <剑指Offer> 一书源自该书作者何海涛坚持更新与编写的博客( http://zhedahht.blog.163.com/ ),该博客收集整理了大量如微软.Google等知名IT企业的经 ...

  3. 算法题001 剑指Offer 面试题三:二维数组中的查找

    剑指Offer题目1:二维数组中的查找 题目描述: http://ac.jobdu.com/problem.php?cid=1039&pid=0 在一个二维数组中,每一行都按照从左到右递增的顺 ...

  4. 【强烈推荐】《剑指Offer:名企面试官精讲典型编程题》一书中IT名企经典面试题

    各位程序猿: <剑指Offer> 一书源自该书作者何海涛坚持更新与编写的博客( http://zhedahht.blog.163.com/ ),该博客收集整理了大量如微软.Google等知 ...

  5. 【送书福利8本】YYDS《剑指Offer》,百万程序员人手一册

    程序员面试应该看什么书? 博文菌必须毫不犹豫地首推<剑指Offer>这本程序员面试圣经. 这可不是博文菌信口拈来的回答,看看广大网友们的反馈,就知道这是经过读者朋友们认证的事实!( PS: ...

  6. C#刷剑指Offer | 【常考题】最小的k个数

    [C#刷题]| 作者 / Edison Zhou 这是EdisonTalk的第299篇学习分享 我们来用之前学到的数据结构知识来刷<剑指Offer>的一些核心题目(精选了其中30+道题目) ...

  7. C#刷剑指Offer | 二叉树中和为某一值的路径

    [C#刷题]| 作者 / Edison Zhou 这是EdisonTalk的第292篇原创内容 我们来用之前学到的数据结构知识来刷<剑指Offer>的一些核心题目(精选了其中30+道题目) ...

  8. C#刷剑指Offer | 二叉搜索树的后序遍历序列

    [C#刷题]| 作者 / Edison Zhou 这是EdisonTalk的第289篇原创内容 我们来用之前学到的数据结构知识来刷<剑指Offer>的一些核心题目(精选了其中30+道题目) ...

  9. C#刷剑指Offer | 从上到下打印二叉树

    [C#刷题]| 作者 / Edison Zhou 这是EdisonTalk的第288篇原创内容 我们来用之前学到的数据结构知识来刷<剑指Offer>的一些核心题目(精选了其中30+道题目) ...

最新文章

  1. 是时候抛弃web.xml了?
  2. 【TensorFlow-windows】keras接口学习——线性回归与简单的分类
  3. MySQL日志分类及性能分析你应该知道的知识
  4. 信息学奥赛一本通 1090:含k个3的数 | OpenJudge NOI 1.5 30
  5. 20复变函数的积分(六)
  6. 手写二叉树的基本操作
  7. 【Java小工匠聊密码学】--对称加密--DES
  8. 图表控件MsChart使用demo
  9. c语言邮递员问题算法,中国邮递员问题的求解实例
  10. 【游戏开发题库】使用Unity制作Unity题库,支持题目录入和刷题(面试 | 笔试 | 自制题库 | 从基础到高级)
  11. PB设置表格背景颜色
  12. 全球首本 | 系统介绍深度学习计算机视觉方法
  13. CentOS(tlinux)安装php55w失败,Requires: libjpeg.so.62(LIBJPEG_6.2)(64bit)解决办法
  14. 易扩展,易复用,封装axios
  15. 虚拟试衣-DiOr论文解读
  16. 【历史上的今天】3 月 3 日:ATT 成立;全球最大分布式计算项目正式停止;家酿俱乐部首次会议
  17. 小强在用计算机计算968,最新苏教版三年级数学下册第四单元测试题及答案3套...
  18. 集成XXL-JOB任务调度中心
  19. 【嵌入式04.2】STM32F103C8T6的简易流水灯仿真(寄存器实现+STM32CubeMX实现)
  20. WPF 制作 Windows 屏保

热门文章

  1. 千影-java万能播放器(java视频播放器)
  2. 解决anaconda拆卸后,打开powershell提示 : 无法将“C:\ProgramData\Anaconda3\Scripts\conda.exe”项识别为 cmdlet、函数、脚本
  3. 研究生体检色弱计算机专业,研究生体检主要有什么项目 色盲会影响专业吗
  4. 机器视觉LED灯珠检测案例
  5. 人民警察警衔等级与肩章标志
  6. “F5G+EIoT“构建能源物联网,助力电力物联网数据服务
  7. vue 自定义按键/指令/过滤器
  8. Kids Photography: Newborns 儿童摄影教程:新生儿 Lynda课程中文字幕
  9. 离散数学班委成员选举,王小红,李强,丁金生,python实现
  10. DuiLib的第一个win32程序