楚天网站建设合同,js制作网页游戏,国外商业网站设计,冶金工业建设工程定额总站网站具体思路#xff1a;
将二叉树层序遍历#xff08;节点#xff09;插进队列中#xff0c;遇到空时就break#xff08;退出循环#xff09;#xff0c;再重新遍历一遍#xff0c;若空的后面又再次出现数据#xff0c;则返回false#xff08;不是完全二叉树#xff0…具体思路
将二叉树层序遍历节点插进队列中遇到空时就break退出循环再重新遍历一遍若空的后面又再次出现数据则返回false不是完全二叉树否则即前面条件不满足返回true是完全二叉树。
提前所创树结构 判断函数
// 判断二叉树是否是完全二叉树
bool TreeComplete(TreeNode* root)
{Queue q;QueueInit(q);if (root)QueuePush(q, root);int levelSize 1;while (!QueueEmpty(q)){TreeNode* front QueueFront(q);QueuePop(q);if (front NULL)break;QueuePush(q, front-left);QueuePush(q, front-right);}// 前面遇到空以后后面还有非空就不是完全二叉树while (!QueueEmpty(q)){TreeNode* front QueueFront(q);QueuePop(q);if (front){QueueDestroy(q);return false;}}QueueDestroy(q);return true;
}
输出结果 队列的源码位于上篇文章中可自行参考。