二叉树
wyyyyyyyy·
这个作者很懒,什么都没留下…
展开
-
lintcode 二叉树的最大深度
1:问题描述:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的距离哪家公司问你的这个题? Airbnb Alibaba Amazon Apple Baidu Bloomberg Cisco Dropbox Ebay Facebook Google Hulu Intel Linkedin Microsoft NetEase Nvid原创 2017-04-07 23:15:00 · 277 阅读 · 0 评论 -
lintcode 二叉树总结
总结 写了将近两个星期的二叉树终于写完了,感觉这次做得很不好,刚开始这个专题的时候自己很努力在做,前面的几个题自己把握的还行,但是自从上星期开始 自己有的就是写了一部分就写不下去了,调试也不过的时候,自己也没动太多脑子思考,然后就在网上找了答案,经过了修正,然后就提交了,过了就写博客,自己这样根本就没从题中真正学到东西。很多我并没有真正用心去做,这样做只会很浪费时间,自己并没有学到很多东原创 2017-04-20 23:10:15 · 358 阅读 · 0 评论 -
lintcode 把排序数组转换为高度最小的二叉搜索树
1:问题描述:给一个排序数组(从小到大),将其转换为一棵高度最小的排序二叉树。样例给出数组 [1,2,3,4,5,6,7], 返回 4 / \ 2 6 / \ / \1 3 5 72:解题思路:将数组二分,将中间的值作为根节点,前面的作为左子树,后面的作为右子树,之后调用递归解决问题。3:解题代码:/**原创 2017-04-20 17:19:01 · 465 阅读 · 0 评论 -
Lintcode 子树
1:问题描述:有两个不同大小的二进制树: T1 有上百万的节点; T2 有好几百的节点。请设计一种算法,判定 T2 是否为 T1的子树。 注意事项若 T1 中存在从节点 n 开始的子树与 T2 相同,我们称 T2 是 T1 的子树。也就是说,如果在 T1 节点 n 处将树砍断,砍断的部分将与 T2 完全相同。2:解题思路:先写一个比较函数,用来比较两棵树原创 2017-04-20 16:15:00 · 308 阅读 · 0 评论 -
lintcode 翻转二叉树
1:问题描述 翻转一棵二叉树样例 1 1 / \ / \2 3 => 3 2 / \ 4 42:解题思路:将左右子树翻转之后,再将子树的子树翻转。3:解题代码/** * Definition of TreeNode: * class TreeNode { * pu原创 2017-04-13 16:59:17 · 1255 阅读 · 0 评论 -
Lintcode 克隆二叉树
1:问题描述深度复制一个二叉树。给定一个二叉树,返回一个他的 克隆品 。样例给定一个二叉树: 1 / \ 2 3 / \4 5返回其相同结构相同数值的克隆二叉树: 1 / \ 2 3 / \4 52:解题思路 创建一个根节点,将原来的二叉树的根的值赋给他,然后在通过遍历,创造和原创 2017-04-13 16:57:44 · 361 阅读 · 0 评论 -
lintcode 将二叉树拆成链表
1:问题描述:将一棵二叉树按照前序遍历拆解成为一个假链表。所谓的假链表是说,用二叉树的 right 指针,来表示链表中的next 指针。样例 1 \ 1 2 / \ \ 2 5 => 3 / \ \ \ 3 4 6原创 2017-04-12 20:46:16 · 396 阅读 · 0 评论 -
Lintcode 等价二叉树
1:问题描述检查两棵二叉树是否等价。等价的意思是说,首先两棵二叉树必须拥有相同的结构,并且每个对应位置上的节点上的数都相等。样例 1 1 / \ / \ 2 2 and 2 2 / /4 4就是两棵等价的二叉树。 1原创 2017-04-12 20:22:26 · 476 阅读 · 0 评论 -
lintcode 二叉树的最大节点
1:问题描述:在二叉树中寻找值最大的节点并返回2:思路:用中间结点保存每一次递归时比较的取得最大值的节点。3:解题代码:/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(int原创 2017-04-09 00:32:45 · 1315 阅读 · 0 评论 -
lintcode 二叉树的层次遍历
1:问题描述:给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问)2:解题思路:将每一层的数据存到队列里面去,用递归的方法访问,层次依次增加。3:解题代码:/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right;原创 2017-04-08 12:58:30 · 589 阅读 · 0 评论 -
lintcode 二叉树的后序遍历
1:问题描述:给出一棵二叉树,返回其节点值的后序遍历2:解题思路:用递归的方法后序遍历二叉树,存到vector里去,返回数组,得到二叉树的内容。3:解题代码: /** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left,原创 2017-04-08 12:50:50 · 2516 阅读 · 0 评论 -
Lintcode 二叉树的中序遍历
1:问题描述:给出一棵二叉树,返回其节点值的中序遍历。样例给出二叉树 {1,#,2,3}, 1 \ 2 / 3返回 2:解题思路:用递归的方法中序遍历二叉树,存到vector里去,返回数组,得到二叉树的内容。3:解题代码: /** * Definition of TreeNode:原创 2017-04-08 00:17:26 · 221 阅读 · 0 评论 -
lintcode 二叉树的前序遍历
1:问题描述:给出一棵二叉树,返回其节点值的前序遍历。给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3 2:解题思路:用递归的方法前序遍历二叉树,存到vector里去,返回数组,得到二叉树的内容。3:解题代码: /** * Definition of TreeNode: * class TreeN原创 2017-04-07 23:47:42 · 430 阅读 · 0 评论 -
lintcode 二叉树的最小深度
1:问题描述:给定一个二叉树,找出其最小深度。二叉树的最小深度为根节点到最近叶子节点的距离。样例给出一棵如下的二叉树: 1 / \ 2 3 / \ 4 5 这个二叉树的最小深度为 22;解题思路:和求最大深度类似,用递归算法,但是比求最大深度复杂,还要考原创 2017-04-07 23:16:56 · 603 阅读 · 0 评论 -
lintcode 二叉树的所有路径
1:问题描述:给一棵二叉树,找出从根节点到叶子节点的所有路径。样例给出下面这棵二叉树: 1 / \2 3 \ 5所有根到叶子的路径为:[ "1->2->5", "1->3"]2:解题思路: 根据前序遍历的思路,将从根结点到每一个叶子结点的路径全都插入到向量中去。3:解题代码:原创 2017-04-21 20:35:10 · 618 阅读 · 0 评论