二叉树
文章平均质量分 60
myxabc
这个作者很懒,什么都没留下…
展开
-
二叉树总结
二叉树这部分题主要利用递归。找好递归的出口。找路径的那部分题要注意清理现场。就比如一开始说忘了清理现场,就一直出现了runtime error。对二叉树进行反转的时候要从底端开始。二叉树的最小深度要考虑到斜树的情况,由于一开始未考虑到斜树的情况就一直错误。等等。原创 2017-04-21 16:59:32 · 196 阅读 · 0 评论 -
二叉树的中序遍历
问题描述:给出一颗二叉树,返回其中序遍历。实现思路:创建动态数组来存放节点的值。利用遍历的方法。实现代码:/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(in原创 2017-04-09 15:52:41 · 354 阅读 · 0 评论 -
二叉树的后序遍历
问题描述:给出一棵二叉树,返回其节点值的后序遍历。实现思路:创建动态数组来存放节点的值。利用递归的思想。实现代码:/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(in原创 2017-04-09 15:57:33 · 156 阅读 · 0 评论 -
二叉树的最大深度
问题描述:给定一个二叉树,找其最大深度。二叉树的深度为根节点到最远叶子节点的距离。实现思路:实现代码:/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(in原创 2017-04-09 16:01:09 · 181 阅读 · 0 评论 -
等价二叉树
问题描述:是否等价。等价的意思是说,首先两颗二叉树必须拥有相同的结构,并且每个对应位置上的节点上的数都相等。实现思路:利用递归,判断根节点的值,左子树的值,右子树的值。实现代码:/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNod原创 2017-04-10 21:05:07 · 251 阅读 · 0 评论 -
克隆二叉树
问题描述:深度复制一个二叉树。给定一个二叉树,返回一个他的克隆品。实现思路:利用递归,每次创建一个新节点,让它的值等于root的值。它的左子树等于root的左子树,它的右子树等于root的右子树。实现代码: * Definition of TreeNode: * class TreeNode { * public: * int val; * Tr原创 2017-04-10 21:15:38 · 200 阅读 · 0 评论 -
翻转二叉树
问题描述:实现思路:实现代码:/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(int val) { * this->val = val;原创 2017-04-12 20:23:08 · 129 阅读 · 0 评论 -
二叉树的最大节点
问题描述:在二叉树中寻找值最大的节点并返回。实现思路:先利用前序遍历把二叉树的每个节点的值存放于动态数组中。然后对动态数组中的节点的值进行比较,返回值最大的节点。实现代码:vector v;class Solution {public: /** * @param root the root of binary tree * @retur原创 2017-04-10 21:42:26 · 435 阅读 · 0 评论 -
二叉树的最小深度
问题描述:给定一棵二叉树找出其最小深度。实现思路:二叉树的最小深度和最大深度不同。需要考虑斜树的情况。实现代码:/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode原创 2017-04-12 20:48:21 · 150 阅读 · 0 评论 -
把排序数组转化为高度最小的二叉搜索树
问题描述:把排序数组转化为高度最小的二叉搜索树。实现思路:初始时先把排序数组中间的值找出来作为根节点,分成了左右两部分数组,在利用递归对左右两部分进行相同的处理。代码:/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left,原创 2017-04-20 16:06:52 · 176 阅读 · 0 评论 -
二叉树的层次遍历
问题描述:对一棵二叉树进行层次遍历实现思路:利用队列,在队尾增加,队头删除。在访问每一层时,先记住这一层的rear ,然后访问该层的节点,同时访问结点的左右子树增加在在队尾。当访问到该层的最后一个节点时,记住该队列rear的值。进行下一层的访问。代码:/** * Definition of TreeNode: * class TreeNode { * public:原创 2017-04-20 16:16:48 · 342 阅读 · 0 评论 -
子树
问题描述:有两个不同大小的二进制树: T1 有上百万的节点; T2 有好几百的节点。请设计一种算法,判定 T2 是否为 T1的子树。 注意事项若 T1 中存在从节点 n 开始的子树与 T2 相同,我们称 T2 是 T1 的子树。也就是说,如果在 T1 节点 n 处将树砍断,砍断的部分将与 T2 完全相同。实现思路:判断是否为左右子树,首先要利用一原创 2017-04-20 16:58:51 · 139 阅读 · 0 评论 -
二叉树的所有路径
/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(int val) { * this->val = val; * this->left = this原创 2017-04-20 17:30:05 · 179 阅读 · 0 评论 -
将二叉树拆成链表
问题描述:将一颗二叉树按照前序遍历拆解成为一个假链表。所谓的假链表将一棵二叉树按照前序遍历拆解成为一个假链表。所谓的假链表是说,用二叉树的 right 指针,来表示链表中的 next 指针。原创 2017-04-21 16:40:52 · 242 阅读 · 0 评论 -
二叉树的路径和
问题描述:给定一个二叉树,找出所有路径中各节点相加总和等于给定目标值的路径。一个有效的路径,指的是从根结点到叶节点的路径。实现思路:找出所有路径,算出路径和,如果路径和等于目标值那么就将该路径加入vector中。最后返回该vector。/** * Definition of TreeNode: * class TreeNode { * public: *原创 2017-04-21 16:55:20 · 150 阅读 · 0 评论 -
二叉树的前序遍历
问题描述给出一颗二叉树,返回其节点值的前序遍历。实现思路:创建一个动态数组存放每个节点的值。利用递归,先访问根,再访问左子树,最后访问右子树。最后返回向量V。实现代码:/ * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left,原创 2017-04-09 15:42:10 · 166 阅读 · 0 评论