1:填数组
二叉树可以这样表示根节点是 i ,那麽左孩子是 2 * i ,右孩子是 2 * i + 1,根据这个关系可已经进行填表处理。
struct node{
int val;
node *left,*right;
};
int n;//树节点的数量
int node[2^n];
int finindex=0;
void fill(node *node,int index){
finindex=max(finindex,index);
node[index] = node->val;
int l = 2*index;
int r = l + 1;
if(node->left=!NULL){
fill(node->left,l);
}
if(node->right=!NULL){
fill(node->right,r);
}
}
bool judge(){
return n == finindex;
}
2:层序遍历
struct node{
int val;
node *left,*right;
};
bool isafter=false;
vector<int> LevelTrasvel(node *root){
queue<node *>que;
que.push(root);
vector<int> v;
while(!que.empty()){
node *frot=que.front();
que.pop();
v.push_back(frot->val);
if(frot->left!=NULL){
if(after) isComplete=false;
que.push(frot->left);
}
else{
after=true;
}
if(frot->right!=NULL){
if(after) isComplete=false;
que.push(frot->right);
}
else{
after=true;
}
}
层序遍历的话最后一个节点可能不是节点指数最大的那个!