关于判断一棵二叉树是否为完全二叉树

2024-11-07 18:16:55
有2个网友回答
网友(1):

下面是我写的C++代码,测试已通过。

核心思想:将二叉树的节点按层次push进队列,再进行判断。


头文件要用到下面两个:

#include

#include //要用到队列


节点的定义如下:

class Node{

public:

    char data;

    Node *lchild;

    Node *rchild;

};


判定一颗二叉树是否为完全二叉树的函数在下面的图片中:

网友(2):

是正确的。。。晕~~~~ 方法是用多对二叉树进行广度搜索,搜索过程中计算每层不为空的连续节点个数,例如在第lev层,节点个数必须为(1< #include #define N 100 struct tree_node{int data;struct tree_node *left,*right;};struct tree_node *tn[N]; void init(int n){int i;for(i=0;idata=i; tn[i]->left=NULL; tn[i]->right=NULL;}}struct tree_node *que[3*N]; int have(int head,int tail) //寻找不为空的节点{int i=head; for(;i