树
文章平均质量分 52
树的学习题目积累
晴空对晚照
这个作者很懒,什么都没留下…
展开
-
7-4 树的遍历 (20 分) 后序+中序恢复层序
参考链接:????https://blog.csdn.net/shiliang97/article/details/102924283 带点注释理解一下 题目 思路 层序按行输出,对树的分析类似于完全二叉树,不好分层就利用完全二叉树的下标 具体分析见注释 #include <bits/stdc++.h> using namespace std; vector<int> post,in,level(100000,-1 ); //要在多个函数间调用,所以声明为全局比较好 int n;原创 2021-12-04 15:37:05 · 811 阅读 · 0 评论 -
[LC] 验证二叉搜索树
题目 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 示例 代码要求 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; *原创 2021-11-06 12:44:05 · 90 阅读 · 0 评论 -
[LC]二叉树的序列化与反序列化
题目 序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。 请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。 提示: 输入输出格式与 LeetCode 目前使用的方式一致,详情请参阅 LeetCode 序列化二叉树的格式。你并非必须采取这种方式,你也可以采用其原创 2021-11-06 12:23:30 · 88 阅读 · 0 评论 -
LC 二叉树的最近公共祖先
题目 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 示例 题解 思路:找最近,那就从下往上找。入口是根,从下往上找所以要用递归 最近祖先,所以两个肯定一个在左结点一个在右结点——>下层两个递归 只要找到一个,他往上走的所有结点都可以标记为true 要是找到两个(即左右都为true),则可以确定此为根节原创 2021-11-01 13:45:56 · 84 阅读 · 0 评论 -
[MOOC-DS]04-树7 二叉搜索树的操作集
题目描述 函数接口定义: BinTree Insert( BinTree BST, ElementType X ); BinTree Delete( BinTree BST, ElementType X ); Position Find( BinTree BST, ElementType X ); Position FindMin( BinTree BST ); Position FindMax( BinTree BST ); 其中BinTree结构定义如下: typedef struct TNode原创 2021-10-24 16:05:12 · 68 阅读 · 0 评论 -
[LC] 从中序与后序遍历序列构造二叉树
题目 分析 一些函数 按想法搜索过的函数 在vector中查找一个元素:find() find函数主要实现在容器内查找指定的元素,且这个元素必须是基本数据类型的 查找成功返回一个指向指定元素的迭代器,查找失败返回end迭代器 eg.在此处,后续遍历的最后一个值是根,在中序中找到这个值就可以分段 int x=postorder.back(); TreeNode node=TreeNode(x); auto it=find(inorder.begin(),inorder.end(),x); find_原创 2021-10-22 11:15:11 · 84 阅读 · 0 评论