编写算法判别给定二叉树是否为完全二叉树_别找了,链表和二叉树相关面试题以及解答,我都给你们找好了...
来源公众号:苦逼的码农
作者:帅地
无论是在面试还是在平时的做题中,链表相关算法题以及二叉树相关算法题,可以说是考的非常非常多的。我在 2019 的秋招面试中,也是遇到了好几次。为此,我总结了 9 道最高频的链表相关面试题以及 8 道二叉树相关面试题,并且每道题都给出详细的解答,如果你把这些链表题都搞懂了,那么我相信你在链表方面,是没有太大问题的了,二叉树也是。为了大家方便定位,这里先给出大概的提纲:
1、【链表问题】如何优雅着反转单链表
2、【链表问题】删除单链表中的第K个节点
3、【链表问题】删除单链表的中间节点
4、【链表问题】环形单链表约瑟夫问题
5、【链表问题】三种方法带你优雅判断回文链表
6、【链表问题】将单向链表按某值划分成左边小,中间相等,右边大的形式
7、【链表问题】复制含有随机指针节点的链表
8、【链表问题】将单链表的每K个节点之间逆序
9、【链表问题】将搜索二叉树转换成双向链表
10、【二叉树问题】二叉树的先序遍历(非递归版)
11、【二叉树问题】二叉树的中序编历(非递归版)
12、【二叉树问题】二叉树的后序遍历(非递归版)
13、【二叉树问题】从上往下打印二叉树
14、【二叉树问题】从上往下打印二叉树
15、【二叉树问题】二叉树镜像
16、【二叉树问题】二叉树的子结构
17、【二叉树问题】重建二叉树
1、【链表问题】如何优雅着反转单链表
【题目描述】
反转单链表。例如链表为:
1->2->3->4
反转后为
4->3->2->1
【要求】
如果链表的长度为 N, 时间复杂度达到 O(N), 额外空间复杂度达到 O(1)
答案看这里:答案解析
2、 【链表问题】删除单链表中的第K个节点
在单链表中删除倒数第 K 个节点。
要求:如果链表的长度为 N, 时间复杂度达到 O(N), 额外空间复杂度达到 O(1)
答案看这里:答案解析
3、【链表问题】删除单链表的中间节点
给定链表的头节点head,实现删除链表的中间节点的函数。
例如:
步删除任何节点;
1->2,删除节点1;
1->2->3,删除节点2;
1->2->3->4,删除节点2;
1->2->3->4-5,删除节点3;
要求:如果链表的长度为 N, 时间复杂度达到 O(N), 额外空间复杂度达到 O(1)
答案看这里:答案解析
4、【链表问题】环形单链表约瑟夫问题
输入:一个环形单向链表的头节点 head 和报数 m.
返回:最后生存下来的节点,且这个节点自己组成环形单向链表,其他节点都删除掉。
答案看这里:答案解析
5、【链表问题】三种方法带你优雅判断回文链表
给定一个链表的头节点 head, 请判断该链表是否为回文结构。
例如:
1->2->1,返回 true.
1->2->2->1, 返回 true。
1->2->3,返回 false。
要求:如果链表的长度为 N, 时间复杂度达到 O(N)。
答案看这里:答案解析
6、【链表问题】将单向链表按某值划分成左边小,中间相等,右边大的形式
给定一个单向链表的头结点head,节点的值类型是整型,再给定一个整数privot。实现一个调整链表的函数,将链表调整为左部分都是值小于privot的节点,中间部分都是值等于privot的节点,右部分都是大于privot的节点。且对某部分内部节点的顺序不做要求
例如:链表9-0-4-5-1,pivot=3。
调整后是1-0-4-9-5,
也可以是0-1-9-5-4
要求:如果链表的长度为 N, 时间复杂度达到 O(N)。
答案看这里:答案解析
7、【链表问题】复制含有随机指针节点的链表
要求:如果链表的长度为 N, 时间复杂度达到 O(N)。
答案看这里:答案解析
8、【链表问题】将单链表的每K个节点之间逆序
给定一个单链表的头节点head, 实现一个调整单链表的函数,使得每K个节点之间逆序,如果最后不够K个节点一组,则不调整最后几个节点。
例如:
链表:1->2->3->4->5->6->7->8->null, K = 3。
调整后:3->2->1->6->5->4->7->8->null。其中 7,8不调整,因为不够一组。
要求:如果链表的长度为 N, 时间复杂度达到 O(N)。
答案看这里:答案解析
9、【链表问题】将搜索二叉树转换成双向链表
对于二叉树的节点来说,有本身的值域,有指向左孩子和右孩子的两个指针;对双向链表的节点来说,有本身的值域,有指向上一个节点和下一个节点的指针。在结构上,两种结构有相似性,现有一棵搜索二叉树,请将其转为成一个有序的双向链表。
例如:
这棵二查搜索树转换后的双向链表从头到尾依次是 1~9。对于每一个节点来说,原来的 right 指针等价于转换后的 next 指针,原来的 left 指针等价于转换后的 last 指针,最后返回转换后的双向链表的头节点。
要求:如果链表的长度为 N, 时间复杂度达到 O(N)。
答案看这里:答案解析
10、【二叉树问题】二叉树的先序遍历(非递归版)
按照二叉树的先序遍历打印二叉树,并且不能使用递归。
答案看这里:答案解析
11、【二叉树问题】二叉树的中序编历(非递归版)
按照二叉树的中序遍历打印二叉树,并且不能使用递归。
答案看这里:答案解析
12、【二叉树问题】二叉树的后序遍历(非递归版)
按照二叉树的后序遍历打印二叉树,并且不能使用递归。
答案看这里:答案解析
13、【二叉树问题】从上往下打印二叉树
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
答案看这里:答案解析
14、【二叉树问题】从上往下打印二叉树
题目
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
答案看这里:答案解析
15、【二叉树问题】二叉树镜像
题目
二叉树结构:
1 class TreeNode {2 int val;3 TreeNode left;4 TreeNode right;5 TreeNode(int x) { val = x; }6 }
答案看这里:答案解析
16、【二叉树问题】二叉树的子结构
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
答案看这里:答案解析
17、【二叉树问题】重建二叉树
题目
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。
答案看这里:答案解析
总结
关于二叉树的还要很多常见算法题,并且也有一定的难度,今天这几道二叉树算是相对简单的,后面慢慢给大家讲解,今天这篇文章,主要是为了让大家方便查找,所以总结了一波。
推荐阅读
告别动态规划,连刷40道动规算法题,我总结了动规的套路
动态规划该如何优化?我总结了这些套路,以后优化就是分分钟
写了很久,这是一份适合普通大众/科班/非科班的『学习路线』
普普通通,我的三年大学
历经两个月,我的秋招之路结束了!
程序员必须掌握的算法有哪些?谈谈这这几年学过的算法
【吐血整理】那些让你起飞的计算机基础知识:学什么,怎么学?
编写算法判别给定二叉树是否为完全二叉树_别找了,链表和二叉树相关面试题以及解答,我都给你们找好了...相关推荐
- 编写算法判别给定二叉树是否为完全二叉树_推荐一位实力超强的平安前端算法大佬:瓶子君...
今天给大家推荐一位平安大佬:前端瓶子君,一个专注于前端开发的小瓶子,五年大厂开发经验,掘金优秀作者. 「前端进阶算法」系列是她4月初发起的活动,从 0 到 1 构建完整的前端数据结构与算法体系.这是一 ...
- c++编写算法判断二叉树是否为完全二叉树_[校招-算法题] 二叉树基础算法1
二叉树是面试中常考的数据结构,因为涉及大量指针操作,因此可以考察思维的严谨性和灵活性.但是校招中的二叉树题规律性很强,因此需要总结一下. 各种常见的二叉树概念 二叉树:每个结点最多有两个子树(左子树和 ...
- c++编写算法判断二叉树是否为完全二叉树_字节面试官:连这90道LeetCode算法题都不会也来面试?...
面试大厂必刷:LeetCode算法90题 1. 买股票的最佳时机 难度级别:简单 题目: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一 ...
- 二叉链表和职工管理系统结合_基于二叉链表的二叉树实现
main.c// 数据结构实验三 Created by 南隹 on 2019/11/12.// Copyright © 2019 南隹. All rights reserved.//以下代码部分功能需 ...
- 判断给定二叉树是否是完全二叉树
二叉树按二叉链表形式存储,设计算法判断给定二叉树是否是完全二叉树 根据完全二叉树的定义,具有n个结点的完全二叉树与满二叉树中编号从1~n的结点一一对应.算法思想:采用层次遍历算法,将所有结点加入队列( ...
- 6.36③ 若已知两棵二叉树B1和B2皆为空,或者皆 不空且B1的左、右子树和B2的左、右子树分别相似, 则称二叉树B1和B2相似。试编写算法,判别给定两 棵二叉树是否相似。
6.36③ 若已知两棵二叉树B1和B2皆为空,或者皆 不空且B1的左.右子树和B2的左.右子树分别相似, 则称二叉树B1和B2相似.试编写算法,判别给定两 棵二叉树是否相似. 要求实现下列函数: S ...
- 已知一棵完全二叉树存于顺序表sa中,sa.elem[1..sa.length]含结点值,试编写算法由此顺序存储结构建立该二叉树的二叉链表。
已知一棵完全二叉树存于顺序表sa中,sa.elem[1-sa.length]含结点值,试编写算法由此顺序存储结构建立该二叉树的二叉链表. 分析:由二叉树的性质可知,一个下标为i的节点若有左子树,则其左 ...
- JavaScript数据结构与算法(2)(集合、字典、哈希表、二叉树、图)(ES6)
注意:原教学视频:JavaScript(ES6)数据结构和算法 | JavaScript数据结构与算法 (都是CoderWhy老师的教学) 原作者(笔记)链接:JavaScript 数据结构与算法 | ...
- 用二叉链表存储二叉树,并判断二叉树是否为完全二叉树
题目: 按要求二叉树按二叉链表形式存储, 1.写一个建立二叉树的算法:2.写一个判别给定的二叉树是否是完全二叉树的算法 分析:判断是否是完全二叉树的方法:若某结点无左子女就不应有右子女 建立二叉树[递 ...
最新文章
- SAP Batch Management 批次主数据中classification视图中GR Date没有被更新?
- SpringMVC自动将请求参数和入参对象的属性进行一一绑定;要求请求参数的名字和javaBean入参的对象里面的属性名是一样的||员工的增删改查案例
- 5分钟学会开发浏览器扩展
- 化工原理第四版课后习题答案
- ruby html解析器
- 5-4 是否同一棵二叉搜索树 (25分)
- java调用js查询mongo_mongodb操作之使用javaScript实现多表关联查询
- python中grid函数_python tkinter中的grid布局是什么?
- php在web服务器中的工作原理
- 【雷达通信】基于matlab联邦滤波算法惯性+GPS+地磁组合导航仿真【含Matlab源码 1276期】
- 软考高级系统分析师考试2022论文考了些啥?改为二选一
- 黑客攻防技术宝典浏览器实战篇
- 数字化营销如何打造全链路数据统计解决方案
- 零基础python教程视频
- AURIX TC397 ASCLIN UART
- 拼多多收php吗_拼多多果园助力PHP版可运行在云函数
- 少儿学python真的有用吗_如何看待海淀妈妈们认为Python是儿童才学的低端编程?...
- React最佳实践系列 —— Dva快速入门
- PPC音量太小和听筒音太小的解决方法
- 孟岩:想抓住EOS的机会,从这四个方向入手吧!
热门文章
- 整理自己的.net工具库
- 深入Java虚拟机-第二章-Java内存区域-学习笔记
- ecshop 多语言版 fckeditor,支持中文英文韩文等众多语言
- win10无法新建文件夹怎么办 win10右键新建菜单设置方法
- 2013年最新最热播的电影 合集
- HDU ACM 3986 Harry Potter and the Final Battle(邻接表实现最短路dijkstra堆优化记录路径 + 枚举最短路上每条边)...
- 使用SVN+apache搭建一个版本控制服务器
- Windows下Jenkins的详细安装及使用
- ELK结合Beats工具的搭建使用(Metricbeat、Filebeat、Topbeat)
- Zabbix系统端口监控状态