![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二叉树
zyq-record
这个作者很懒,什么都没留下…
展开
-
二叉树的前序遍历
题目:样例给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3 返回 [1,2,3].思路: 首先在函数的外面建立一个独立的向量,用于储存遍历过的元素,最终返回向量。前序遍历是先遍历根节点,将根节点的值放入向量中,再遍历根节点的左子数最遍历右子数,遍历后将节点的数值val放入之前建立的向量中。在遍历左子原创 2017-04-07 21:01:37 · 188 阅读 · 0 评论 -
二叉树的所有路径
题目:给一棵二叉树,找出从根节点到叶子节点的所有路径。样例给出下面这棵二叉树: 1 / \2 3 \ 5所有根到叶子的路径为:[ "1->2->5", "1->3"]思路: 这个题的重点在于如何存储前面的结点的值,用递归的思想。下面说一下具体实现: 首先说一下存储所有路径的函数a原创 2017-04-21 19:18:45 · 652 阅读 · 0 评论 -
子树
题目:有两个不同大小的二进制树: T1 有上百万的节点; T2 有好几百的节点。请设计一种算法,判定 T2 是否为 T1的子树。 注意事项若 T1 中存在从节点 n 开始的子树与 T2 相同,我们称 T2 是 T1 的子树。也就是说,如果在 T1 节点 n 处将树砍断,砍断的部分将与 T2 完全相同。思路:主要分为两个部分,第一步先判断第一个树里原创 2017-04-20 17:06:52 · 555 阅读 · 0 评论 -
把排序数组转换为高度最小的二叉搜索树
题目:给一个排序数组(从小到大),将其转换为一棵高度最小的排序二叉树。 注意事项There may exist multiple valid solutions, return any of them.样例给出数组 [1,2,3,4,5,6,7], 返回 4 / \ 2 6 / \ / \1 3原创 2017-04-12 20:29:42 · 370 阅读 · 0 评论 -
等价二叉树
题目:检查两棵二叉树是否等价。等价的意思是说,首先两棵二叉树必须拥有相同的结构,并且每个对应位置上的节点上的数都相等。样例 1 1 / \ / \ 2 2 and 2 2 / /4 4就是两棵等价的二叉树。 1原创 2017-04-12 20:17:55 · 313 阅读 · 0 评论 -
克隆二叉树
题目:深度复制一个二叉树。给定一个二叉树,返回一个他的 克隆品 。样例给定一个二叉树: 1 / \ 2 3 / \4 5返回其相同结构相同数值的克隆二叉树: 1 / \ 2 3 / \4 5思路:建立一个新节点存放当前给出的节点的值,新建的左节点等于给出的左节点,新建的原创 2017-04-12 20:10:18 · 214 阅读 · 0 评论 -
将二叉树拆成链表
题目:将一棵二叉树按照前序遍历拆解成为一个假链表。所谓的假链表是说,用二叉树的 right 指针,来表示链表中的 next 指针。 注意事项不要忘记将左儿子标记为 null,否则你可能会得到空间溢出或是时间溢出。样例 1 \ 1 2 / \原创 2017-04-12 19:43:27 · 221 阅读 · 0 评论 -
二叉树的最大节点
题目:在二叉树中寻找值最大的节点并返回。样例给出如下一棵二叉树: 1 / \ -5 2 / \ / \0 3 -4 -5 返回值为 3 的节点。思路:首先建立一个极小的数x=-1000,便于第一个节的数的录入并且进入递归函数。每一次都先判断当前节点的值和前一个的最大值比较,如果当前节点大记录下最大值和当前节点原创 2017-04-08 23:42:20 · 382 阅读 · 0 评论 -
翻转二叉树
题目:样例 1 1 / \ / \2 3 => 3 2 / \ 4 4思路:将根节点左节点变成右节点,右节点变成左节点。一层一层地往下遍历,在最后一层转换左右节点,在回溯的时候一层一层的交换左右节点。代码:class Solution {public: /**原创 2017-04-08 23:18:41 · 167 阅读 · 0 评论 -
二叉树的最小深度
题目:给定一个二叉树,找出其最小深度。二叉树的最小深度为根节点到最近叶子节点的距离。样例给出一棵如下的二叉树: 1 / \ 2 3 / \ 4 5 这个二叉树的最小深度为 2思路:开始以为和求最大深度似的一只去深度最小,后来想想不原创 2017-04-08 13:25:28 · 308 阅读 · 0 评论 -
二叉树的最大深度
题目:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的距离。样例给出一棵如下的二叉树: 1 / \ 2 3 / \ 4 5这个二叉树的最大深度为3.思路:运用递归的思想,一步一步的进行,求出每一步左右子数较大的一个,加一回到上一次,重复前面的步骤求出较大的一个加一回到上一次递归的地方。代码:c原创 2017-04-08 13:24:26 · 235 阅读 · 0 评论 -
二叉树的层次遍历
题目:给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问)样例给一棵二叉树 {3,9,20,#,#,15,7} : 3 / \9 20 / \ 15 7返回他的分层遍历结果:[ [3], [9,20], [15,7]]思路: 返回值是一个以向量为元素的向量,先在函数外定义两个向量std::vec原创 2017-04-08 13:01:42 · 269 阅读 · 0 评论 -
二叉树的后序遍历
题目:给出一棵二叉树,返回其节点值的后序遍历。样例给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3返回 [3,2,1]思路:首先在函数的外面建立一个独立的向量,用于储存遍历过的元素,最终返回向量。前序遍历是先遍历左子数,将最后一个左节点的值放入向量中,再遍历右子树最遍历根节点,遍历后将节点的数值val放入之原创 2017-04-08 12:58:43 · 166 阅读 · 0 评论 -
二叉树的中序遍历
题目:给出一棵二叉树,返回其中序遍历样例给出二叉树 {1,#,2,3}, 1 \ 2 / 3返回 [1,3,2].思路: 首先在函数的外面建立一个独立的向量,用于储存遍历过的元素,最终返回向量。前序遍历是先遍历左子树,将最后一个左节点的值放入向量中,再遍历根节点最后遍历右子树,遍历后将节点的数值val放入之前建立的原创 2017-04-08 12:52:53 · 211 阅读 · 0 评论 -
二叉树专题总结
二叉树的题普遍比链表的题难,变化也比较多。运用递归的思想很神奇,不好想但是代码很简短。从几种遍历中,递归的思想就运用的很好。层次遍历的遍历方式不太一样,用的队列的思想,运用while一层一层的输出,这个题一开始做的时候改了很长时间,思路虽然不难但是中间有很多易错的地方值得注意。判断是否为等价二叉树,克隆二叉树等运用的递归的算法,是我现在应该扎实掌握的。让我印象最深刻的题就是输出所有路径和二叉搜索树原创 2017-04-21 19:58:05 · 270 阅读 · 0 评论