
二叉树
文章平均质量分 68
cqkmath2
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
等价二叉树
问题描述: 检查两棵二叉树是否等价。等价的意思是说,首先两棵二叉树必须拥有相同的结构,并且每个对应位置上的节点上的数都相等。 样例: 1 1 / \ / \ 2 2 and 2 2 / / 4 4 就是两棵等价的二叉树。 1原创 2017-04-20 11:12:50 · 216 阅读 · 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 BST原创 2017-05-20 22:26:59 · 144 阅读 · 0 评论 -
二叉树总结
感想: 二叉树主要利用遍历的思想,将各种功能得用遍历结合在一起实现。原创 2017-04-21 22:43:00 · 149 阅读 · 0 评论 -
把排序数组转换为高度最小的二叉搜索树
问题描述: 给一个排序数组(从小到大),将其转换为一棵高度最小的排序二叉树。 样例: 给出数组 [1,2,3,4,5,6,7], 返回 4 / \ 2 6 / \ / \ 1 3 5 7 解题思路: 用二分法将数组二分,递归构建一棵树,这样能保证深度最小。 代码: /** * Definition of TreeN原创 2017-04-21 22:35:40 · 159 阅读 · 0 评论 -
二叉树的层次遍历
问题描述: 给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问) 样例: 给一棵二叉树 {3,9,20,#,#,15,7} : 3 / \ 9 20 / \ 15 7 返回他的分层遍历结果: [ [3], [9,20], [15,7] ] 解题思路: 用两个队列交替使用存储,将根节点放在队列0里,然后用循环取出来将孩子放在原创 2017-04-20 16:53:42 · 187 阅读 · 0 评论 -
克隆二叉树
问题描述: 深度复制一个二叉树。 给定一个二叉树,返回一个他的 克隆品 样例: 给定一个二叉树: 1 / \ 2 3 / \ 4 5 返回其相同结构相同数值的克隆二叉树: 1 / \ 2 3 / \ 4 5 解题思路: 定义一个根节点,对给定二叉树遍历,同时这个二叉树也跟着遍历原创 2017-04-20 16:36:58 · 273 阅读 · 0 评论 -
二叉树的最大节点
问题描述: 在二叉树中寻找值最大的节点并返回。 样例: 给出如下一棵二叉树: 1 / \ -5 2 / \ / \ 0 3 -4 -5 返回值为 3 的节点。 解题思路: 用一个全局变量来存储最大值,然后遍历一次每次碰到比全局变量大的值,将该值赋值给全局变量。 代码: class Solution { pu原创 2017-04-20 10:27:21 · 274 阅读 · 0 评论 -
二叉树的前序遍历
问题描述: 给出一棵二叉树,返回其节点值的前序遍历。 样例: 给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3 返回 [1,2,3]. 解题思路: 定义一个向量变量,然后用递归的方式调用前序遍历函数,将每次访问的节点值都加在向量变量里。 代码: /** * Definition of TreeNode:原创 2017-04-20 10:33:43 · 289 阅读 · 0 评论 -
二叉树的中序遍历
问题描述: 给出一棵二叉树,返回其中序遍历 样例: 给出二叉树 {1,#,2,3}, 1 \ 2 / 3 返回 [1,3,2]. 解题思路: 跟前序遍历遍历基本一样只不过先遍历做子树再遍历根节点,最后遍历右子树。 代码: /** * Definition of TreeNode: * class TreeNode原创 2017-04-20 10:38:21 · 214 阅读 · 0 评论 -
二叉树的后序遍历
问题描述: 给出一棵二叉树,返回其节点值的后序遍历。 样例: 给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3 返回 [3,2,1] 解题思路: 利用后续遍历的递归,将每个结点存储在数组里。 代码: /** * Definition of TreeNode: * class TreeNode { * p原创 2017-04-20 10:42:00 · 164 阅读 · 0 评论 -
二叉树的最大深度
问题描述: 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的距离。 样例: 给出一棵如下的二叉树: 1 / \ 2 3 / \ 4 5 这个二叉树的最大深度为3. 解题思路: 通过遍历找到根节点到叶子姐结点的每一条路径,并求出它们的长度,用一个变量来存储,记录最大长度,当有更大的时候便存起来。原创 2017-04-20 10:48:04 · 162 阅读 · 0 评论 -
二叉树的最小深度
问题描述: 给定一个二叉树,找出其最小深度。 二叉树的最小深度为根节点到最近叶子节点的距离。 样例: 给出一棵如下的二叉树: 1 / \ 2 3 / \ 4 5 这个二叉树的最小深度为 2 标签 解题思路: 每一次找到原创 2017-04-20 10:49:09 · 172 阅读 · 0 评论 -
翻转二叉树
问题描述: 翻转一棵二叉树 样例: 1 1 / \ / \ 2 3 => 3 2 / \ 4 4 解题思路: 前序遍历先找到叶子结点,从叶子节点开始往上回溯,每个结点的左子树和右子树交换。 代码: /** * Definition of TreeNode: * class Tree原创 2017-04-20 11:00:51 · 202 阅读 · 0 评论 -
将二叉树拆成链表
问题描述: 将一棵二叉树按照前序遍历拆解成为一个假链表。所谓的假链表是说,用二叉树的 right 指针,来表示链表中的 next 指针。 样例: 1 \ 1 2 / \ \ 2 5 => 3 / \ \ \ 3 4原创 2017-04-20 11:02:14 · 161 阅读 · 0 评论 -
子树
问题描述: 有两个不同大小的二进制树: T1 有上百万的节点; T2 有好几百的节点。请设计一种算法,判定 T2 是否为T1的子树。 样例: 下面的例子中 T2 是 T1 的子树: 1 3 / \ / T1 = 2 3 T2 = 4 / 4原创 2017-04-20 11:07:43 · 198 阅读 · 0 评论 -
在二叉查找树中插入节点
问题描述: 给定一棵二叉查找树和一个新的树节点,将节点插入到树中。 你需要保证该树仍然是一棵二叉查找树。 样例: 给出如下一棵二叉查找树,在插入节点6之后这棵二叉查找树可以是这样的: 2 2 / \ / \ 1 4 --> 1 4 / / \ 3原创 2017-05-20 22:32:01 · 249 阅读 · 0 评论