可以用四分树来表示一个黑白图像,方法是用根节点表示整幅图像,然后把行列各分成两等份,按图中的方式编号,从左到右对应4个子节点。如果某子节点对应的区域全黑或者全白,则直接用一个黑节点或者白节点表示。如果既有黑节点又有白节点,就用一个灰节点表示,并为这个区域递归建树。
要点:
- 递归建树
- 至于题目为什么说只序先序遍历就能确定整个树,其实并非四分树都可以这样,而是这道题的四分树比较特殊,每个非叶子节点一定包含四个节点,不会出现只包含三个节点这样的情况,因此只需先序遍历,也就是说如果树的非叶子节点是满节点的状态,那么都可以用先序遍历确定一个树
#include<bits/stdc++.h>
using namespace std;
const int len = 32;
const int maxn = 1024 + 5;
char s[maxn];
int buf[len][len];
int cnt;
// 2 1
// 3 4