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

来源:百度知道 编辑:UC知道 时间:2024/06/08 02:13:08
用C++写 要完整的程序啊

现在只说下原理,明天再编出来:
树的深度为K,则完全二叉树的小于k-1的层中,节点全部存在,并且,在第K层中(最后一层),到最右节点,没有存在空位置

#include <iostream>

//完全二叉树
// 0
// / \
// 1 2
// / \ /
// 3 4 5

class Node
{
};

int main()
{
Node n[10];
//将节点按上面表示的顺序一个个放入数组中
//当然,这里依靠这个顺序的话,也可以用程序编出来
//假设放入了len个节点 len=5
int len=5;

//这因该是数学中的log..但我不知道怎么用..就实际代替了一下
//5比2的2次方,比2的3次方又小,所以得到二叉树深度为3,(即有三层)
int k=3;

//查找有无空的节点
for(int i=0;i<2*(k-1)-1;i++) //父节点层
{//判断出是否n[i]为空}
for(int i=2*k-1)-1;i<len;i++) //同等层
{//同上}
//在上面找到空的节点就说明不是完全二叉树
}
是模块化了的伪码,其中的细节只能依靠自己了