摘要: 题目描述 "链接" 给出一棵树的结点个数n,以及它的前序遍历和后序遍历,输出它的中序遍历,如果中序遍历不唯一就输出No,且输出其中一个中序即可,如果中序遍历唯一就输出Yes,并输出它的中序 分析 分析题目所给的正反样例,可以发现,最后递归到单一子树后,左根是它,右根也是它,就不唯一了。此时,可以随便 阅读全文
posted @ 2019-08-02 19:25 Doragd 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 题目描述 "链接" 输出一个二叉搜索树的最后两层结点个数a和b,以及他们的和 分析 用链表存储,建立,注意一定记住insert &加引用,以及root=NULL时新建结点的几个操作 dfs求cnt[layer] c++ include using namespace std; struct node 阅读全文
posted @ 2019-08-02 15:59 Doragd 阅读(111) 评论(0) 推荐(0) 编辑
摘要: ```c++ #include using namespace std; const int maxn = 20; struct node{ int l,r; }nodes[maxn]; int n, have[maxn], rt; string l,r; int maxid = -1, ans; void dfs(int root, int idx){ if(root == ... 阅读全文
posted @ 2019-08-02 15:30 Doragd 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 题目描述 "链接" 反转一棵二叉树,给出原二叉树的每个结点的左右孩子,输出它的层序和中序遍历 分析 反转二叉树就是存储时交换左右结点,也可以遍历时交换遍历次序 如何找root,别人用的have[i]=1标记,我用的二重循环 处理输入输出,用string+stoi更简单,我用的char 和自己写的st 阅读全文
posted @ 2019-08-02 15:00 Doragd 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 题目描述 "链接" 给出一棵二叉搜索树(给出每个结点的左右孩子),且已知根结点为0,求并且给出应该插入这个二叉搜索树的数值,求这棵二叉树的层序遍历 分析 给了下标,肯定用静态数组实现 利用的性质:二叉搜索树中序遍历肯定有有序 对所给key进行排序,得到中序遍历次序 利用中序遍历次序,对树进行遍历,可 阅读全文
posted @ 2019-08-01 21:29 Doragd 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 题目描述 "链接" 输入树的结点个数N,结点编号为1~N,非叶子结点个数M,然后输出M个非叶子结点的孩子结点的编号,求结点个数最多的一层,根结点的层号为1,输出该层的结点个数以及层号 这道题类似于前面的那个可以用DFS,BFS解的题 BFS c++ void bfs(){ queue q; laye 阅读全文
posted @ 2019-08-01 20:35 Doragd 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 题目描述 "链接" 给一棵树,在树根处货物的价格为p,然后每往下走一层,价格增加r%,求所有叶子结点的最高价格,以及这个价格的叶子结点个数 分析 关键在于dfs怎么设计来保存这个最大值,以及最大值的个数 别人的代码如下,比较巧。。。还用了个maxnum。。我怎么没想到 c++ void dfs(in 阅读全文
posted @ 2019-08-01 19:47 Doragd 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 题目描述 "链接" 用栈的形式给出一棵二叉树的建立的顺序,求这棵二叉树的后序遍历 分析 性质: 树的先序等于入栈次序,树的中序遍历等于出栈次序 先序:先访问根再入栈,所以入栈次序就是先序遍历次序 中序:先递归访问左子树,回溯时访问根,回溯时即出栈时,所以出栈次序就是中序遍历 所以问题转换为已知先序中 阅读全文
posted @ 2019-08-01 18:34 Doragd 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 题目描述 "链接" 给一棵树,在树根出货物的价格为p,然后从根结点开始每往下走一层,该层的货物价格将会在父亲结点的价格上增加r%,给出每个叶结点的货物量,求他们的价格之和 分析 supply chain看作一棵树 其他注意点在代码中 c++ include using namespace std; 阅读全文
posted @ 2019-08-01 13:55 Doragd 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 题目描述 "链接" 给出一棵树,问每一层各有多少个叶子结点 分析 建树 使用树的静态写法 下标为结点地址 这里题目只是用到了结点的编号,没有点权,所以变成 BFS解法 很自然可以想到用BFS遍历树,对于一个结点,如果没有孩子$child.size()==0$ 则说明是叶子,那么当层的$ans[lay 阅读全文
posted @ 2019-08-01 13:00 Doragd 阅读(165) 评论(0) 推荐(0) 编辑