二叉树
章明狼
IT入门手残学生党一枚、Typora忠实爱好者
展开
-
C++ 经典排序方法之一——归并排序思路解析+例题——逆序运用的两种方法
归并排序 思路 归并排序主要运用了分治的思想,将一组长而复杂的数组,不断分为短小而简单处理的问题,这些个问题都相互独立,但与原问题之间具有的性质相同。得出子问题的解后进行合并,从而深入浅出的解决问题。 一般体现了:分解 -> 求解 -> 合并 的过程。 我们先从最为基础的步骤:把两个已排序的数组归并排序为一个数组了。 就是从头到尾的比较两数组的元素大小,小的数先放入到归并到的数组中,直至其中一个数组的元素已全部遍历放入到归并数组中,另一个数组也全部放入。(如下图所示) 实现代码如下: void原创 2020-08-23 08:52:48 · 471 阅读 · 0 评论 -
C++ 二叉查找树的编码与解码
序列化和反序列化二叉搜索树 题目[leetcode449] 序列化是将数据结构或对象转换为一系列位的过程,以便它可以存储在文件或内存缓冲区中,或通过网络连接链路传输,以便稍后在同一个或另一个计算机环境中重建。 设计一个算法来序列化和反序列化二叉搜索树。 对序列化/反序列化算法的工作方式没有限制。 您只需确保二叉搜索树可以序列化为字符串,并且可以将该字符串反序列化为最初的二叉搜索树。 编码的字符串应尽可能紧凑。 注意:不要使用类成员/全局/静态变量来存储状态。 你的序列化和反序列化算法应该是无状态的。 思路原创 2020-09-06 15:59:16 · 210 阅读 · 0 评论 -
二叉查找树的基础知识(定义、插入和查找数值)
二叉查找树 定义 一棵具有以下性质的二叉树: 若左子树不为空,则左子树上所有节点的值均小于或等于它的根节点的值。 若右子树不为空,则右子树上所有节点的值均大于或等于它的根结点的值。 左、右子树也分别为二叉排序树。 等于的情况只能出现在左子树或右子树中的某一侧。 数据结构与二叉树的完全一样: struct TreeNode{ int val; TreeNode* left; TreeNode* right; TreeNode(int x) : val(x), left(NULL), right(N原创 2020-09-06 11:17:43 · 260 阅读 · 0 评论 -
C++ 寻找二叉树最右边的数进行相加的和
侧面观察二叉树 题目 给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例: 输入: [1,2,3,null,5,null,4,6] 输出: [1, 3, 4, 6] 解释: 思路 提前了解:层次遍历(宽度优先搜索)请点击:二叉树基础知识 在右侧观察到二叉树的数,其实就是二叉树每一层的最右边的一个数,如果需要找到最右边的一个数,可以通过层次遍历去了解每一个节点的层数,然后由层次遍历的顺序去修改该层数下的值,由于层次遍历也是在该层的情况下,从左往右遍历二叉树,所以原创 2020-09-01 09:39:02 · 162 阅读 · 0 评论 -
二叉树的基础知识(定义、深度搜索的三种方式和宽度优先搜索)
二叉树 定义 树是n(n >= 0)个节点的有限集,且这些节点满足如下关系: (1)有且仅有一个节点没有父节点,该节点称为根。 (2)除根外,其余的每个节点都有且仅有一个父节点。 (3)树中的每一个节点都构成一个以它为根的树。 二叉树在满足树的条件时,满足如下条件: 每个节点最多有两个孩子(子树),这两个子树有左右之分,次序不可颠倒。 如下图所示: 二叉树结构构造代码如下: struct TreeNode{ int val; TreeNode *left; TreeNode *right;原创 2020-08-23 09:41:21 · 306 阅读 · 0 评论 -
C++ 将二叉树以前序遍历的顺序转换成链表
二叉树转链表 题目[leetcode114] 给定一个二叉树,原地将它展开为一个单链表。 例如,给定二叉树 1 / \ 2 5 / \ \ 3 4 6 将其展开为: 1 \ 2 \ 3 \ 4 \ 5 \ 6 思路 方法一: 开辟一个vector实现的存储空间,按照前序遍历的顺序将每一个节点存入到节点空间中,之后就是按从头到尾的将每个节点连接在右节点上,即可原创 2020-08-27 17:04:31 · 453 阅读 · 0 评论 -
C++ 【深搜】查找两节点的最近父节点
最近的公共祖先 题目[leetcode236] 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4] 示例 1: 输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q原创 2020-08-23 22:30:34 · 642 阅读 · 1 评论 -
C++ 利用二叉树的深度搜索寻找满足要求的路径
路径之和Ⅱ 题目[leetcode113] 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。 说明: 叶子节点是指没有子节点的节点。 示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1 返回: [ [5,4,11,2], [5,8,4,5] ] 思路 所需的基原创 2020-08-23 15:23:08 · 413 阅读 · 0 评论