判断一棵树是不是完全二叉树
来源:互联网 发布:淘宝客导购名称写什么 编辑:程序博客网 时间:2024/06/13 01:00
完全二叉树:前n-1层结点都是满的,第n层不满的话,只能是缺右孩子,左边是满的。
所以我们可以总结如下两个特点:
1. 当一个结点有右孩子没有左孩子一定不是完全二叉树
2. 当一个结点有左孩子无右孩子或者没有左右孩子接下来的结点一定是叶子结点。(叶子结点即没有左右孩子)。
实现代码:
bool IsCompleteTree(BinaryTreeNode *pRoot){ if (NULL == pRoot) return false; bool uncomplete = false;//记录非满节点 queue<BinaryTreeNode *> q; q.push(pRoot); while (!q.empty()) { BinaryTreeNode *pFront = q.front(); q.pop(); if (uncomplete)//前面存在非满节点 { if (NULL != pFront->_pLeft || NULL != pFront->_pRight) return false; } else//前边不存在非满节点 { if (NULL == pFront->_pLeft && NULL != pFront->_pRight)//存在右孩子没有左孩子一定不为完全二叉树 return false; else if (NULL != pFront->_pLeft && NULL == pFront->_pRight)//存在左孩子没有右孩子可能不是,记录为非满节点看后续结点 { q.push(pFront->_pLeft); uncomplete = true;//只有左孩子是非满节点 } else if (NULL != pFront->_pLeft && NULL != pFront->_pRight)//左右孩子都存在,入队列继续循环判断 { q.push(pFront->_pLeft); q.push(pFront->_pRight); } else//左右孩子都不存在,为非满节点,看后续结点 uncomplete = true; } } return true;}
阅读全文
0 0
- 判断一棵树是不是完全二叉树
- 判断一棵树是不是完全二叉树
- 判断是不是完全二叉树
- 判断二叉树是不是完全二叉树
- 判断二叉树是不是完全二叉树
- day15之判断一棵树是不是完全二叉树
- 如何判断是不是完全二叉树
- 判断一颗树是不是完全二叉树
- 判断一棵二叉树是不是完全二叉树
- 判断一棵树是不是平衡二叉树
- 判断一棵树是不是二叉搜索树
- 判断一棵树是不是满二叉树
- 判断一棵树是不是二叉搜索树
- 判断二叉树是不是完全二叉树/求两节点最近的公共祖先
- 判断二叉树是不是平衡
- 判断二叉树是不是平衡
- 判断二叉树是不是平衡[
- 判断二叉树是不是平衡
- [leetcode]208. Implement Trie (Prefix Tree)
- HDU
- B
- 搬砖难题
- Zookeeper(二)数据模型
- 判断一棵树是不是完全二叉树
- java异常
- 如何查询Oracle,Sql Server,MySQL 中的数据库名称、数据表名称、字段名称
- DOS常用命令
- Find a way(bfs)
- Spring MVC工作流程
- html frameset框架
- 第九章 组织文件 笔记
- python003 Python3 基本数据类型