本篇文章主要介绍了"完全二叉树 判断二叉树是否为完全二叉树",主要涉及到完全二叉树方面的内容,对于C/C++jrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下:
判断二叉树是否为完全二叉树。完全二叉树的定义是,前n-1层都是满的,第n层如有空缺,则是缺在右边,即第n层的最右边的节点,它的左边是满的,右边是空的。这个问题的...
判断二叉树是否为完全二叉树。完全二叉树的定义是,前n-1层都是满的,第n层如有空缺,则是缺在右边,即第n层的最右边的节点,它的左边是满的,右边是空的。
这个问题的描述已经提示了解法,采用广度优先遍历,从根节点开始,入队列,如果队列不为空,循环。遇到第一个没有左儿子或者右儿子的节点,设置标志位,如果之后再遇到有左/右儿子的节点,那么这不是一颗完全二叉树。
这个方法需要遍历整棵树,复杂度为O(N),N为节点的总数。
#include
#include
using namespace std;
bool leftMost =false;
queue q;
bool ProcessChild(Node* node)
{
if(node)
{
if(!leftMost)
{
q.push_back(node);
}
else
return false;
}
else
leftMost=true;
return true;
}
bool IsCompleteBinaryTree(Node* root)//层序遍历
{
if(root==NULL)
return true;
q.push_back(root);
while(!q.empty())
{
Node* node=q.pop();
if (!ProcessChild(node->left))
return false;
//处理右节点
if (!ProcessChild(node->right))
return false;
}
return true;
}
以上就介绍了完全二叉树 判断二叉树是否为完全二叉树,包括了完全二叉树方面的内容,希望对C/C++jrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播有兴趣的朋友有所帮助。
本文网址链接:http://www.codes51.com/article/detail_3147469.html