二叉树
文章平均质量分 63
zy11110
这个作者很懒,什么都没留下…
展开
-
二叉树的最大节点
题目:在二叉树中寻找值最大的节点并返回。样例:给出如下一棵二叉树: 1 / \ -5 2 / \ / \0 3 -4 -5 返回值为 3 的节点。思路:采用非递归的先根次序遍历二叉树①从根节点开始,访问左子树,并将当前访问的结点与当前最大值结点作比较,若当前结点值大于当前最大值结点,则用该结点替换最大值结点,然后原创 2017-04-07 08:08:07 · 852 阅读 · 0 评论 -
子树
题目:/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(int val) { * this->val = val; * this->le原创 2017-04-20 22:12:12 · 199 阅读 · 0 评论 -
将二叉树拆成链表
题目:将一棵二叉树按照前序遍历拆解成为一个假链表。所谓的假链表是说,用二叉树的 right 指针,来表示链表中的 next 指针。样例: 1 \ 1 2 / \ \ 2 5 => 3 / \ \ \ 3 4 6原创 2017-04-20 21:32:31 · 179 阅读 · 0 评论 -
二叉树的路径和
题目:给定一个二叉树,找出所有路径中各节点相加总和等于给定目标值 的路径。一个有效的路径,指的是从根节点到叶节点的路径。样例:给定一个二叉树,和 目标值 = 5: 1 / \ 2 4 / \ 2 3返回:[ [1, 2, 2], [1, 4]]思路:当访问到某一结点时,把该结点添加到vector上,原创 2017-04-20 21:15:58 · 317 阅读 · 0 评论 -
把排序数组转换为高度最小的二叉搜索树
题目给一个排序数组(从小到大),将其转换为一棵高度最小的排序二叉树。样例给出数组 [1,2,3,4,5,6,7], 返回 4 / \ 2 6 / \ / \1 3 5 7思路:将数组转化为树,令该树通过中根遍历的结果与数组中的顺序一致。将数组二分,令小的那一部分作为左子树,大的那一部分作为右子树,中间数作为根原创 2017-04-20 16:50:54 · 209 阅读 · 0 评论 -
二叉树的最小深度
给定一个二叉树,找出其最小深度。二叉树的最小深度为根节点到最近叶子节点的距离。原创 2017-04-19 11:18:16 · 185 阅读 · 0 评论 -
克隆二叉树
深度复制一个二叉树。给定一个二叉树,返回一个他的 克隆品 。样例给定一个二叉树: 1 / \ 2 3 / \4 5返回其相同结构相同数值的克隆二叉树: 1 / \ 2 3 / \4 5思路:在遍历的过程中生成一个新树,该新树的节点值等于旧树对应的节点值。具体代码原创 2017-04-19 11:04:30 · 203 阅读 · 0 评论 -
翻转二叉树
题目:翻转一棵二叉树样例 1 1 / \ / \2 3 => 3 2 / \ 4 4思路:在遍历的过程中将每个结点的左右子树进行交换。从根节点出发,如果操作的节点是空值,则不进行任何操作,否则交换左右儿子。具体代码:/** * Definition of TreeNode:原创 2017-04-19 10:56:45 · 186 阅读 · 0 评论 -
等价二叉树
题目:检查两棵二叉树是否等价。等价的意思是说,首先两棵二叉树必须拥有相同的结构,并且每个对应位置上的节点上的数都相等。样例 1 1 / \ / \ 2 2 and 2 2 / /4 4就是两棵等价的二叉树。 1 1原创 2017-04-19 10:48:42 · 317 阅读 · 0 评论 -
二叉树的最大深度
题目:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的距离。样例给出一棵如下的二叉树: 1 / \ 2 3 / \ 4 5这个二叉树的最大深度为3.思路:二叉树的层数就是二叉树的深度,所以只需在二叉树的层次遍历中的加入一个记录层数的数a即可。/** * Definition of TreeNo原创 2017-04-10 21:28:49 · 214 阅读 · 0 评论 -
二叉树的层次遍历
题目:给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问)样例给一棵二叉树 {3,9,20,#,#,15,7} : 3 / \9 20 / \ 15 7返回他的分层遍历结果:[ [3], [9,20], [15,7]]挑战 挑战1:只使用一个队列去实现它挑战2:用DFS算法来做原创 2017-04-10 20:48:35 · 234 阅读 · 0 评论 -
二叉树的后序遍历
题目:给出一棵二叉树,返回其节点值的后序遍历。样例给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3返回 [3,2,1]挑战 你能使用非递归实现么?思路:只需将前序遍历中的V.push_back(root->val);放到递归遍历结点的左右子树后具体实现代码:/** * Definit原创 2017-04-10 20:37:57 · 457 阅读 · 0 评论 -
二叉树的前序遍历
题目:给出一棵二叉树,返回其节点值的前序遍历。样例:给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3 返回 [1,2,3].挑战 :你能使用非递归实现么?思路:/** * Definition of TreeNode: * class TreeNode { * public原创 2017-04-08 20:55:36 · 222 阅读 · 0 评论 -
二叉树的中序遍历
题目:给出一棵二叉树,返回其中序遍历样例:给出二叉树 {1,#,2,3}, 1 \ 2 / 3返回 [1,3,2].挑战 :你能使用非递归算法来实现么?思路:此题思路与二叉树的前序遍历的思路一样,只是将具体实现代码:/** * Definition of TreeNode: * class Tr原创 2017-04-10 20:11:31 · 1107 阅读 · 0 评论 -
20153743--2二叉树总结
二叉树中最终要的操作就是遍历原创 2017-04-20 22:35:43 · 246 阅读 · 0 评论