二叉树
文章平均质量分 60
fanglegefang
这个作者很懒,什么都没留下…
展开
-
克隆二叉树
一.题目描述深度复制一个二叉树。给定一个二叉树,返回一个他的 克隆品 。样例给定一个二叉树: 1 / \ 2 3 / \4 5返回其相同结构相同数值的克隆二叉树: 1 / \ 2 3 / \4 5二.解题思路三.实现代码/** * Definition o原创 2017-04-15 15:44:12 · 285 阅读 · 0 评论 -
Convert BST to Greater Tree
一.题目描述Given a Binary Search Tree (BST), convert it to a Greater Tree such that every key of the original BST is changed to the original key plus sum of all keys greater than the original key in BS原创 2017-05-20 10:11:03 · 156 阅读 · 0 评论 -
二叉树的路径和
一题目描述二.解题思路三.实现代码四.感悟原创 2017-04-22 22:02:31 · 261 阅读 · 0 评论 -
二叉树的所有路径
一.题目描述给一棵二叉树,找出从根节点到叶子节点的所有路径。样例给出下面这棵二叉树: 1 / \2 3 \ 5所有根到叶子的路径为:[ "1->2->5", "1->3"]二.解题思路当一个节点的左右子树都为空时,把从根节点到该节点的路径保存在向量中,找到所有的叶子节点就完成了对所有路径的保存.三.实现代码/**原创 2017-04-22 21:43:42 · 4458 阅读 · 0 评论 -
二叉树的层次遍历
一.题目描述给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问)样例给一棵二叉树 {3,9,20,#,#,15,7} : 3 / \9 20 / \ 15 7返回他的分层遍历结果:[ [3], [9,20], [15,7]]二.解题思路利用队列的先进先出,先让根节点入队,然后依次出队保存在向量中,同时让其左右儿子入队原创 2017-04-22 21:30:06 · 231 阅读 · 0 评论 -
子树
一.题目描述有两个不同大小的二进制树: T1 有上百万的节点; T2 有好几百的节点。请设计一种算法,判定 T2 是否为 T1的子树。 注意事项若 T1 中存在从节点 n 开始的子树与 T2 相同,我们称 T2 是 T1 的子树。也就是说,如果在 T1 节点 n 处将树砍断,砍断的部分将与 T2 完全相同。样例下面的例子中 T2 是 T1 的子树原创 2017-04-22 21:13:37 · 347 阅读 · 0 评论 -
把排序数组转换为高度最小的二叉搜索树
一.题目描述给一个排序数组(从小到大),将其转换为一棵高度最小的排序二叉树。 注意事项There may exist multiple valid solutions, return any of them.样例给出数组 [1,2,3,4,5,6,7], 返回 4 / \ 2 6 / \ / \1原创 2017-04-22 20:22:58 · 878 阅读 · 0 评论 -
将二叉树拆成链表
一.题目描述将一棵二叉树按照前序遍历拆解成为一个假链表。所谓的假链表是说,用二叉树的 right指针,来表示链表中的 next 指针。 注意事项不要忘记将左儿子标记为 null,否则你可能会得到空间溢出或是时间溢出样例 1 \ 1 2 / \原创 2017-04-22 19:44:13 · 167 阅读 · 0 评论 -
二叉树的最小深度
一.题目描述给定一个二叉树,找出其最小深度。二叉树的最小深度为根节点到最近叶子节点的距离。样例给出一棵如下的二叉树: 1 / \ 2 3 / \ 4 5 这个二叉树的最小深度为 2二.解题思路与求最大深度的思想差不多,利用递归的方法求原创 2017-04-22 19:41:31 · 235 阅读 · 0 评论 -
二叉树的最大深度
一.题目描述给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的距离。样例给出一棵如下的二叉树: 1 / \ 2 3 / \ 4 5这个二叉树的最大深度为3.二.解题思路利用递归分别遍历左子树和右子树,每递归一次节点到根节点的距离加1,最后比较哪个子树的最后一个节点离根节点的三.实现代码/**原创 2017-04-21 22:18:15 · 344 阅读 · 0 评论 -
二叉树的最大节点
一.题目描述在二叉树中寻找值最大的节点并返回。样例给出如下一棵二叉树: 1 / \ -5 2 / \ / \0 3 -4 -5 返回值为 3 的节点。二.解题思路定义一个新的节点a,令其值为一个非常小的数,利用前序遍历比较给定节点与a的值,若给定节点比a的值大,则把此节点赋值给a,直至遍历完所有节点,返回的a即为最大原创 2017-04-21 21:59:26 · 4726 阅读 · 0 评论 -
二叉树的中序遍历
一.题目描述给出一棵二叉树,返回其中序遍历样例给出二叉树 {1,#,2,3}, 1 \ 2 / 3返回 [1,3,2].二.解题思路三.实现代码/** * Definition of TreeNode: * class TreeNode { * public: * int val; *原创 2017-04-20 22:15:02 · 166 阅读 · 0 评论 -
二叉树的后序遍历
一.题目描述给出一棵二叉树,返回其节点值的后序遍历。样例给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3返回 [3,2,1]二.解题思路后序遍历与前序遍历中序遍历除了根节点的访问顺序不同,其余都相同.三.实现代码/** * Definition of TreeNode: * class TreeNode {原创 2017-04-21 21:09:13 · 151 阅读 · 0 评论 -
二叉树的前序遍历
一.题目描述给出一棵二叉树,返回其节点值的前序遍历。样例给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3 返回 [1,2,3].二.解题思路三.实现代码/** * Definition of TreeNode: * class TreeNode { * public: * int val;原创 2017-04-20 17:21:24 · 286 阅读 · 0 评论 -
等价二叉树
一.题目描述检查两棵二叉树是否等价。等价的意思是说,首先两棵二叉树必须拥有相同的结构,并且每个对应位置上的节点上的数都相等。样例 1 1 / \ / \ 2 2 and 2 2 / /4 4就是两棵等价的二叉树。 1原创 2017-04-20 16:27:49 · 1967 阅读 · 0 评论 -
翻转二叉树
一.题目描述翻转一棵二叉树样例 1 1 / \ / \2 3 => 3 2 / \ 4 4二.解题思路令根节点的左子树等于右子树,右子树等于左子树,利用递归的方法将每一个节点的左右子树翻转,从而完成整个树的翻转.三.实现代码/** * Definition of TreeN原创 2017-04-19 22:36:05 · 213 阅读 · 0 评论 -
在二叉查找树中插入节点
一.题目描述给定一棵二叉查找树和一个新的树节点,将节点插入到树中。你需要保证该树仍然是一棵二叉查找树。 注意事项 You can assume there is no duplicate values in this tree + node.样例 给出如下一棵二叉查找树,在插入节点6之后这棵二叉查找树可以是这样的:2 2/ \ / \1 4 --> 1 4原创 2017-05-20 09:23:35 · 423 阅读 · 0 评论