![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二叉树
文章平均质量分 75
liu_shijia
这个作者很懒,什么都没留下…
展开
-
二叉树的前序遍历
问题描述:给出一棵二叉树,返回其节点值的前序遍历。 样例: 给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3 返回 [1,2,3]. 实现思路:由二叉树前序遍历的操作定义,用递归算法访问二叉树的节点,并将访问的节点的值存放在向量v中,返回向量v。 实现代码: /** * Definition of TreeNo原创 2017-04-11 17:12:28 · 201 阅读 · 0 评论 -
二叉树总结
学链表那部分的时候感觉还行,自己感觉跟以前的C++内容联系不多。学二叉树这部分明显感觉出学的不好了,从开始学的时候说到递归这个词,就感觉有点懵啊。我当时回来看了以前的C++课本,看了递归调用那部分的内容。说到做题,一开始前面的那些题自己还有想法,能写个八九不离十。在后面写的这几个,都是写不下去,在网上搜了代码或者看同学的,然后自己捣鼓明白写上的。通过做题可以看到,二叉树这部分题目用递归来写真的很方原创 2017-04-22 14:03:39 · 138 阅读 · 0 评论 -
子树
问题描述: 有两个不同大小的二进制树: T1 有上百万的节点; T2 有好几百的节点。请设计一种算法,判定 T2 是否为 T1的子树。 注意事项 若 T1 中存在从节点 n 开始的子树与 T2 相同,我们称 T2 是 T1 的子树。也就是说,如果在 T1 节点 n 处将树砍断,砍断的部分将与 T2 完全相同。 样例: 下面的例子中原创 2017-04-22 13:26:18 · 144 阅读 · 0 评论 -
二叉树的路径和
问题描述:给定一个二叉树,找出所有路径中各节点相加总和等于给定 目标值 的路径。 一个有效的路径,指的是从根节点到叶节点的路径。原创 2017-04-22 13:14:04 · 235 阅读 · 0 评论 -
二叉树的所有路径
问题描述:给一棵二叉树,找出从根节点到叶子节点的所有路径。 样例: 给出下面这棵二叉树: 1 / \ 2 3 \ 5 所有根到叶子的路径为: [ "1->2->5", "1->3" ] 实现思路:前序遍历二叉树将从根节点到叶子节点的路径都存放到向量中去。 实现代码: * Definition of Tree原创 2017-04-21 21:03:26 · 237 阅读 · 0 评论 -
将二叉树拆成链表
问题描述:将一棵二叉树按照前序遍历拆解成为一个假链表。所谓的假链表是说,用二叉树的 right 指针,来表示链表中的 next 指针。 样例: 1 \ 1 2 / \ \ 2 5 => 3 / \ \ \ 3 4 6原创 2017-04-21 20:10:55 · 178 阅读 · 0 评论 -
二叉树的层次遍历
问题描述:给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问) 样例: 给一棵二叉树 {3,9,20,#,#,15,7} : 3 / \ 9 20 / \ 15 7 返回他的分层遍历结果: [ [3], [9,20], [15,7] ] 实现思路:创建一个队列,首先将根节点入队,定义一个向量level原创 2017-04-19 21:17:32 · 252 阅读 · 0 评论 -
把排序数组转换为高度最小的二叉搜索树
问题描述:给一个排序数组(从小到大),将其转换为一棵高度最小的排序二叉树。 样例: 给出数组 [1,2,3,4,5,6,7], 返回 4 / \ 2 6 / \ / \ 1 3 5 7 实现思路:首先找到这个数组的中值,将这个中值赋值给根节点,此时中值以左的数据都比中值小了,运用递归用这段数组构建左子树;中值以右的数据都比中值大原创 2017-04-21 16:40:28 · 222 阅读 · 0 评论 -
翻转二叉树
问题描述:翻转一棵二叉树 样例 1 1 / \ / \ 2 3 => 3 2 / \ 4 4 实现思路:从根出发开始操作,如果要操作的节点是空值,则不进行任何操作;否则,交换左右儿子,这里新建一个temp变量作为过渡。然后利用递归算法,分别对左右子树进行处理。 实现代码: /** * Def原创 2017-04-15 20:55:56 · 293 阅读 · 0 评论 -
克隆二叉树
问题描述: 深度复制一个二叉树。 给定一个二叉树,返回一个他的 克隆品 。 样例: 给定一个二叉树: 1 / \ 2 3 / \ 4 5 返回其相同结构相同数值的克隆二叉树: 1 / \ 2 3 / \ 4 5 实现思路:运用递归算法,采用前序遍历法遍历二叉树的每一个节点,并同时建立一个新节点原创 2017-04-15 20:28:02 · 216 阅读 · 0 评论 -
二叉树的最大节点
问题描述:在二叉树中寻找值最大的节点并返回。 样例: 给出如下一棵二叉树: 1 / \ -5 2 / \ / \ 0 3 -4 -5 返回值为 3 的节点。 实现思路:在函数外定义一个新节点max,并赋一个很小的初始值。用一种遍历方法(我用的是前序遍历)遍历二叉树的节点,将当前节点的值与定义的节点max的值进行比较,若当前节点的值比原创 2017-04-15 15:48:10 · 2047 阅读 · 0 评论 -
二叉树的最小深度
问题描述: 给定一个二叉树,找出其最小深度。 二叉树的最小深度为根节点到最近叶子节点的距离。 样例: 给出一棵如下的二叉树: 1 / \ 2 3 / \ 4 5 这个二叉树的最小深度为 2 实现思路:一分为二,分别求二叉树的原创 2017-04-13 16:31:41 · 199 阅读 · 0 评论 -
二叉树的最大深度
问题描述: 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的距离。 样例: 给出一棵如下的二叉树: 1 / \ 2 3 / \ 4 5 这个二叉树的最大深度为3. 实现思路:要求二叉树的最大深度,首先判断二叉树是否为空,若为空,则深度为0。如果不为空,分别求左子树的深度和右子树的深度,取最大的那一个加1,即为二原创 2017-04-11 17:52:23 · 338 阅读 · 0 评论 -
二叉树的后序遍历
问题描述:给出一棵二叉树,返回其节点值的后序遍历。 样例: 给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3 返回 [3,2,1] 实现思路:原创 2017-04-11 17:28:42 · 196 阅读 · 0 评论 -
二叉树的中序遍历
问题描述:给出一棵二叉树,返回其中序遍历 样例: 给出二叉树 {1,#,2,3}, 1 \ 2 / 3 返回 [1,3,2].原创 2017-04-11 17:23:45 · 167 阅读 · 0 评论 -
等价二叉树
问题描述:检查两棵二叉树是否等价。等价的意思是说,首先两棵二叉树必须拥有相同的结构,并且每个对应位置上的节点上的数都相等。 样例: 1 1 / \ / \ 2 2 and 2 2 / / 4 4 就是两棵等价的二叉树。 1 1原创 2017-04-13 16:51:40 · 289 阅读 · 0 评论