题目
有一棵二叉树,请设计一个算法判断它是否是完全二叉树。
给定二叉树的根结点root,请返回一个bool值代表它是否为完全二叉树。树的结点个数小于等于500。
思路
二叉树层次遍历。当结点只有右子树没有左子树时不是完全二叉树。
代码
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class CheckCompletion:
def chk(self, root):
# write code here
queue = []
if root:
queue.append(root)
chkLeaf = False
while len(queue):
node = queue[0]
queue.pop(0)
if chkLeaf:
if node.left or node.right:
return False
elif node.left and node.right:
queue.append(node.left)
queue.append(node.right)
elif node.right:
return False
elif node.left:
queue.append(node.left)
chkLeaf = True
return True