Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 842b4a5

Browse files
author
侯利朋
committed
.\958.check-completeness-of-a-binary-tree ok
1 parent 6850a23 commit 842b4a5

File tree

2 files changed

+85
-0
lines changed

2 files changed

+85
-0
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
/*
2+
* @lc app=leetcode id=958 lang=golang
3+
*
4+
* [958] Check Completeness of a Binary Tree
5+
*/
6+
/**
7+
* Definition for a binary tree node.
8+
* type TreeNode struct {
9+
* Val int
10+
* Left *TreeNode
11+
* Right *TreeNode
12+
* }
13+
*/ err-------------------------------------
14+
// [1]
15+
// [1,2,null,4,5,6]
16+
// BFS 层次遍历,统计node个数,直到遇到第一个空节点为止
17+
func isCompleteTree(root *TreeNode) bool {
18+
if root == nil {
19+
return true
20+
}
21+
22+
queue := []*TreeNode{}
23+
queue = append(queue, root)
24+
for len(queue) > 0 {
25+
node := queue[0]
26+
queue = queue[1:]
27+
if node.Left == nil || node.Right == nil {
28+
if node.Left == nil && node.Right != nil {
29+
return false
30+
}
31+
break
32+
}
33+
queue = append(queue, node.Left, node.Right)
34+
}
35+
36+
for len(queue) > 0 {
37+
node := queue[0]
38+
queue = queue[1:]
39+
if node.Left != nil || node.Right != nil {
40+
return false
41+
}
42+
}
43+
44+
return true
45+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/*
2+
* @lc app=leetcode id=958 lang=golang
3+
*
4+
* [958] Check Completeness of a Binary Tree
5+
*/
6+
/**
7+
* Definition for a binary tree node.
8+
* type TreeNode struct {
9+
* Val int
10+
* Left *TreeNode
11+
* Right *TreeNode
12+
* }
13+
*/
14+
// 0 ms
15+
// [1]
16+
// [1,2,null,4,5,6,]
17+
// BFS 层次遍历,直到遇到第一个空节点后,队列中应该全是空节点
18+
func isCompleteTree(root *TreeNode) bool {
19+
if root == nil {
20+
return true
21+
}
22+
23+
queue := []*TreeNode{}
24+
queue = append(queue, root)
25+
for len(queue) > 0 {
26+
node := queue[0]
27+
queue = queue[1:]
28+
if node == nil { // 直到找到第一个空节点
29+
break
30+
}
31+
queue = append(queue, node.Left, node.Right)
32+
}
33+
// 空节点之后,应该全是空节点
34+
for _, node := range queue {
35+
if node != nil {
36+
return false
37+
}
38+
}
39+
return true
40+
}

0 commit comments

Comments
 (0)