编写算法,判别给定二叉树是否为完全二叉树。
时间: 2024-12-09 20:16:17 浏览: 4
判断一个二叉树是否为完全二叉树,可以通过遍历树的方式来进行。一个完全二叉树的特点是除了最后一层外,每一层都尽可能地填满节点,且最右边的节点都集中在该层最左边。
以下是简单的步骤和伪代码:
1. 使用深度优先搜索(DFS),从根节点开始递归。
2. 对于每个节点,检查它是否有右孩子。如果有,继续检查其右孩子的右孩子是否存在(如果存在则不是完全二叉树)。反之,如果不存在,则向下一层继续检查。
3. 如果当前节点是叶子节点并且在非满层的最右侧,那么这棵树就是完全二叉树。
4. 遍历完所有节点后,如果没有发现不符合完全二叉树条件的情况,那么可以确定原二叉树是一个完全二叉树。
```python
def isCompleteBinaryTree(root):
def helper(node, level=0):
if not node:
return True
# 检查当前节点是否在最后且非空
if level == height and node.left or level > height:
return False
# 继续遍历左、右子节点并递增层次
return helper(node.left, level + 1) and helper(node.right, level + 1)
height = heightOfTree(root)
return helper(root)
def heightOfTree(node):
if not node:
return 0
return max(heightOfTree(node.left), heightOfTree(node.right)) + 1
# 示例用法:
root = ... # 输入你的二叉树结构
if isCompleteBinaryTree(root):
print("是完全二叉树")
else:
print("不是完全二叉树")
```
阅读全文