Check Completeness Of A Binary Tree
题目描述
二叉树的完全性检验:
给定一个二叉树,确定它是否是一个完全二叉树。
解法
解法一:广度遍历优先
时间复杂度:
O(n)
空间复杂度:
O(n)
func isCompleteTree(root *TreeNode) bool {
if root == nil {
return true
}
// 最大坐标 总节点数
max, nodes := 1, 1
// 节点队列
nodeQ := []*TreeNode{root}
// 节点对应位置节点
posQ := []int{1}
for len(nodeQ) > 0 {
node := nodeQ[0]
pos := posQ[0]
nodeQ = nodeQ[1:]
posQ = posQ[1:]
if node.Left != nil {
nodeQ = append(nodeQ, node.Left)
max = 2 * pos
posQ = append(posQ, max)
nodes++
}
if node.Right != nil {
nodeQ = append(nodeQ, node.Right)
max = 2*pos + 1
posQ = append(posQ, max)
nodes++
}
}
return max == nodes
}
Last updated
Was this helpful?