随笔分类 -  树 - 二叉树

摘要:题目大意:给定一个二叉树,可以染红绿黄三种颜色,要求父节点和子节点的颜色不同,且如果一个节点有两个子节点,那么两个子节点之间的颜色也不同。求最多和最少有多少个节点会被染成绿色。 题解:加深了对二叉树的理解。 对于二叉树来说,每个节点只需保留左右儿子节点编号即可。设 $f[i]$ 表示以 i 为根的子 阅读全文
posted @ 2019-04-10 15:59 shellpicker 阅读(252) 评论(0) 推荐(0)
摘要:题目大意:给定一棵 N 个节点的二叉树的前序遍历和中序遍历,求其后序遍历。 题解:递归操作,每次只需知道先序遍历和中序遍历的开始点,左子树大小即可,根据前序遍历的开始位置可知子树根节点的坐标,再在中序遍历中找到对应的左子树大小,递归操作下去,一棵二叉树就被完全地确定下来了。 代码如下 cpp inc 阅读全文
posted @ 2019-01-09 15:34 shellpicker 阅读(162) 评论(0) 推荐(0)
摘要:题目大意:给定一个有 N 个数组成的序列,在此基础上构建一棵二叉排序树,求每个节点(根节点除外)的父节点的编号是多少。 题解:首先,根据二叉排序树的不稳定性,直接模拟构建二叉排序树肯定会超时,因此需要用其他的数据结构来模拟 BST。在这里可以用平衡树来模拟,即:用一个 $set$ 来维护这 N 个序 阅读全文
posted @ 2018-12-02 21:01 shellpicker 阅读(204) 评论(0) 推荐(0)
摘要:题目大意:后序遍历 题解:建立二叉树的码风不知道怎么突然跟线段树一样了...当然,这道题不建树也是可以的。 代码如下 cpp include using namespace std; const int maxn=1100; int n,len,sum[maxn];// cnt of 0 char 阅读全文
posted @ 2018-11-29 20:46 shellpicker 阅读(184) 评论(0) 推荐(0)
摘要:题目大意:定义对称二叉树为每个节点的左右子树交换后与原二叉树仍同构的二叉树,求给定的二叉树的最大对称二叉子树的大小。 代码如下 cpp include using namespace std; const int maxn=1e6+10; struct node{ int l,r,size,val; 阅读全文
posted @ 2018-11-12 00:46 shellpicker 阅读(554) 评论(1) 推荐(0)