二叉树 是普通树的其中一种特殊情况 二叉树指树的每个节点都最多有两个子节点 1、结构体存二叉树 struct node{ int num; node *l=nullptr,*r=nullptr; }; 2、数组存二叉树 通过fat数组,将下标记为当前的节点编号,下标对应的元素记为父节点编号。 3、根据二叉树的特点规律存树。 二叉树:如果每个节点都是叶子或都是两个子节点的节点,每一层的节点都满的,就是满二叉树 我们将二叉树的各个位置的编号标记出来,当成下标,那么,对于任意一点x来说: 如果编号从1开始,那么x的父节点就是x/2,左子x*2,右子x*2+1 如果编号从0开始,那么x的父节点就是(x-1)/2,左子x*2+1,右子x*2+2 1、将普通二叉树按照满二叉树的规律补满 2、将新的二叉树从1开始进行编号 3、以编号作为下标,以数组元素作为二叉树中节点的值,如果是候补节点,值可以为0或特殊的标记 4、存树 出题方式: 输入一个字符串,代表从上到下,从左到右的二叉树节点值,如果是.代表空节点 string s; cin>>s;//ABC.DE. char erchashu[10000]={}; for(int i=0;i<s.size();i++){ if(s[i]=='.') erchashu[i+1]='@'; else erchashu[i+1]=s[i]; } 接下来三天的任务: 回顾基础(一)的前五章,从头到尾挨着找题: 一眼就会的跳过。 一眼熟悉的重做一遍,如果做不出来,把题记下来。 一眼不会,把题记下来。 这周四之前,一共需要记10道题。 |