《剑指offer》笔记-第4章(1)
来源:互联网 发布:蒙古作文软件 编辑:程序博客网 时间:2024/05/16 03:21
第4章 解决面试题的思路
4.1面试官谈面试思路
编码前讲自己的思路
具体地将问题分析过程、证明
举例子、画图的方式讲清楚问题本身和解决问题的关键
分析的过程中发现错误和漏洞并改正
4.2画图让抽象问题形象化
面试题27:二叉树的镜像
实现函数,输入一棵二叉树,输出它的镜像(照镜子,左节点变成右节点),节点定义如下:
struct BinaryTreeNode{int m_nValue; BinaryTreeNode* m_pLeft;BinaryTreeNode* m_pRight;}
测试用例:
功能测试:只有一个节点的二叉树;普通二叉树;完全二叉树;只有左子树/右子树的二叉树;
特殊输入:二叉树根节点是null;
分析:
1. 当指前序遍历二叉树,如果节点有子节点,则交换子节;直到交换完所有节点(除根节点外)
2. 可用递归或循环实现;
面试题28:对称的二叉树
实现函数,输入一棵二叉树,判断它是不是对称的。
如果一棵二叉树和它的镜像一样,则它是对称的。
测试用例:
功能测试:对称的二叉树;结构不对称的二叉树;结构对称节点值不对称的二叉树;
特殊输入:二叉树根节点是null,只有一个节点的二叉树;所有节点值都相同的二叉树(结构不对称);
分析:
1. 前序遍历二叉树 (根节点、左节点、右节点)的对称遍历是 (根节点、右节点、左节点)
2. 如果两种遍历的结果不相同,则一定不是对称的;
3. 如果两种遍历的结果相同,也有可能是所有节点值相同的不对称二叉树;
4. 在遍历结果中加入null值,则可避免上述情况的出现;
面试题29:顺时针打印矩阵
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
测试用例:
功能测试:多行多列数组;只有一行的数组;只有一列的数组;
特殊输入:只有一个数的数组;
分析:
1. 画图分析:5*5矩阵最后一圈剩下1个数,坐标是(2,2);
2. 6*6矩阵最后一圈剩下4个数,以(2,2)开始;
3. 4*5矩阵、5*4矩阵等非方阵的普通矩阵;
4. 一列的矩阵、一行的矩阵、一个元素的矩阵单独考虑;
- 《剑指offer》笔记-第4章(1)
- 《剑指offer》阅读笔记-第1章
- 《剑指offer》笔记-第4章(4)
- 《剑指offer》笔记-第4章(2)
- 《剑指offer》笔记-第4章(3)
- 《剑指offer》笔记-第5章(4)
- 《剑指offer》笔记-第3章(1)
- 《剑指offer》笔记-第5章(1)
- 《剑指offer》笔记-第6章(1)
- 《剑指offer》笔记-第2章(3)
- 《剑指offer》笔记-第5章(2)
- 《剑指offer》笔记-第5章(3)
- 《剑指offer》笔记-第5章(5)
- 《剑指offer》读书笔记(第1章)
- 《剑指offer》-第2章(1)
- 《剑指offer》读书笔记(第2章)
- 《剑指offer》-第2章(2)
- 剑指offer第1题
- python 环境搭建。
- python学习(7)——面向对象编程
- CSS中清除浮动的方式
- JSON最佳实践
- (4.4.1)使用storyboard实现页面跳转,简单的数据传递
- 《剑指offer》笔记-第4章(1)
- I
- ThreadLocal源码简析
- 1022. Digital Library (30)
- Java包装类对象比较中存在的问题
- 基于Maven的Springboot项目搭建学习笔记
- Java泛型-类型擦除
- 【JZOJ4425】【HNOI2016模拟4.4】Fenwit
- Java并发之并行与并发的区别