![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二叉树
文章平均质量分 54
liumanmanll
其实是个不怎么登录的摆烂
展开
-
二叉树的中序遍历
问题描述:给出一棵二叉树,返回其中序遍历样例给出二叉树 {1,#,2,3}, 1 \ 2 / 3返回 [1,3,2].解题思路:运用递归,先访问二叉树的左子树输出数据,然后输出根节点的数据,最后访问右子树输出数据。代码描述:/** * Definition of TreeNode: * class Tr原创 2017-04-11 17:03:52 · 135 阅读 · 0 评论 -
深度优先搜索
之前做二叉树的时候都做过原创 2017-05-18 17:00:34 · 204 阅读 · 0 评论 -
二叉树做题总结
这次的题感觉比链表的题简单,大部分都需要用递归,有些题确实做的时候想不到,脑洞很大。逻辑真的很重要,有些题写着写着如果中间断掉了,很难继续写下去,还要回过头重新思考。递归函数用着很方便,将大问题简化成解决多个小问题,减少了代码和复杂度。这次做题还出现了新的错误类型restricted call,到现在都不知道哪里出了问题,改着改着就改对了。原创 2017-04-22 21:13:24 · 173 阅读 · 0 评论 -
将二叉树拆成链表
问题描述:将一棵二叉树按照前序遍历拆解成为一个假链表。所谓的假链表是说,用二叉树的 right 指针,来表示链表中的next 指针。样例 1 \ 1 2 / \ \ 2 5 => 3 / \ \ \ 3 4 6原创 2017-04-21 19:33:25 · 455 阅读 · 0 评论 -
子树
问题描述:有两个不同大小的二进制树: T1 有上百万的节点; T2有好几百的节点。请设计一种算法,判定 T2 是否为 T1的子树。 注意事项若 T1 中存在从节点 n 开始的子树与 T2 相同,我们称 T2 是 T1 的子树。也就是说,如果在 T1 节点 n 处将树砍断,砍断的部分将与 T2 完全相同样例下面的例子中 T2 是 T1 的子树:原创 2017-04-21 20:50:48 · 158 阅读 · 0 评论 -
把排序数组转换为高度最小的二叉搜索树
问题描述:给一个排序数组(从小到大),将其转换为一棵高度最小的排序二叉树。 注意事项There may exist multiple valid solutions, return any of them.样例给出数组 [1,2,3,4,5,6,7], 返回 4 / \ 2 6 / \ / \1原创 2017-04-21 22:00:31 · 426 阅读 · 0 评论 -
二叉树的路径和
问题描述:解题思路:代码实现:/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(int val) { * this->val = val; *原创 2017-04-20 16:30:36 · 767 阅读 · 0 评论 -
等价二叉树
问题描述:检查两棵二叉树是否等价。等价的意思是说,首先两棵二叉树必须拥有相同的结构,并且每个对应位置上的节点上的数都相等。样例 1 1 / \ / \ 2 2 and 2 2 / /4 4就是两棵等价的二叉树。 1原创 2017-04-17 10:36:24 · 604 阅读 · 0 评论 -
二叉树的所有路径
问题描述:给一棵二叉树,找出从根节点到叶子节点的所有路径。样例给出下面这棵二叉树: 1 / \2 3 \ 5所有根到叶子的路径为:[ "1->2->5", "1->3"]解题思路:建立一个string类型的向量用以储存二叉树的所有路径,其中二叉树的根节点到每一个叶子节点的路径都表示为string类型的。路径的原创 2017-04-19 21:54:58 · 608 阅读 · 0 评论 -
二叉树的层次遍历
问题描述:给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问)样例给一棵二叉树 {3,9,20,#,#,15,7} : 3 / \9 20 / \ 15 7返回他的分层遍历结果:[ [3], [9,20], [15,7]]解题思路:建立队列,将二叉树每一层的数据依次放入队列中,再建立一个一维向量,将放入队原创 2017-04-19 10:48:33 · 310 阅读 · 0 评论 -
克隆二叉树
问题描述:深度复制一个二叉树。给定一个二叉树,返回一个他的 克隆品 。样例给定一个二叉树: 1 / \ 2 3 / \4 5返回其相同结构相同数值的克隆二叉树: 1 / \ 2 3 / \4 5解题思路:当二叉树为空时,返回空。当二叉树不为空时,定义一个新的二叉树节点c原创 2017-04-13 17:16:16 · 894 阅读 · 0 评论 -
二叉树的最小深度
问题描述:给定一个二叉树,找出其最小深度。二叉树的最小深度为根节点到最近叶子节点的距离。样例给出一棵如下的二叉树: 1 / \ 2 3 / \ 4 5 这个二叉树的最小深度为 2解题思路:当二叉树为空时,返回0;当左子树为原创 2017-04-13 16:47:25 · 287 阅读 · 0 评论 -
二叉树的最大节点
问题描述:在二叉树中寻找值最大的节点并返回。样例给出如下一棵二叉树: 1 / \ -5 2 / \ / \0 3 -4 -5 返回值为 3 的节点。解题思路:先定义一个值为极小值的节点,运用递归,将二叉树各个节点的值与之比较,返回大的那一个。代码实现:class Solution {publi原创 2017-04-17 21:50:11 · 360 阅读 · 0 评论 -
二叉树的最大深度
问题描述:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的距离。样例给出一棵如下的二叉树: 1 / \ 2 3 / \ 4 5这个二叉树的最大深度为3.解题思路:求二叉树的最大深度,就是求根节点到最远叶子节点的距离。运用递归,将左子树和右子树分开算,输出大的那个。代码实现:/** *原创 2017-04-12 21:01:23 · 178 阅读 · 0 评论 -
翻转二叉树
问题描述:翻转一棵二叉树样例 1 1 / \ / \2 3 => 3 2 / \ 4 4解题思路:运用递归,从根节点出发开始操作。如果要操作的节点是空值,则不进行任何操作,返回,否则,则交换左右儿子。然后依次对左子树和右子树进行相同操作。代码实现:/** * D原创 2017-04-12 10:41:51 · 156 阅读 · 0 评论 -
二叉树的后序遍历
问题描述:给出一棵二叉树,返回其节点值的后序遍历。样例给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3返回 [3,2,1]解题思路:运用递归,先访问二叉树的左子树输出数据,然后访问右子树输出数据,最后输出根节点的数据。代码实现:/** * Definition of TreeNode:原创 2017-04-11 17:21:43 · 144 阅读 · 0 评论 -
二叉树的前序遍历
问题描述:给出一棵二叉树,返回其节点值的前序遍历。样例给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3 返回 [1,2,3].解题思路:使用递归,先输出节点上的数据,然后再访问左子树,输出数据,再访问右子树,输出数据。代码实现:/** * Definition of TreeNode: * c原创 2017-04-11 16:42:15 · 192 阅读 · 0 评论 -
宽度优先搜索
之前的二叉树中的题目原创 2017-05-18 17:05:03 · 262 阅读 · 0 评论