Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 9bf74bd

Browse files
author
Victor
authored
simplified some more.
1 parent ae1aaf0 commit 9bf74bd

File tree

1 file changed

+20
-25
lines changed

1 file changed

+20
-25
lines changed

‎958. Check Completeness of a Binary Tree.c

Lines changed: 20 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -45,44 +45,39 @@ Explanation: The node with value 7 isn't as far left as possible.
4545
* };
4646
*/
4747
typedef struct {
48-
int dep;
49-
bool flag;
50-
} set_t;
51-
bool verify_and_set(set_t*set, int d) {
52-
if (set->dep == -1) { // first time verifying a depth
53-
set->dep = d;
48+
int d;
49+
bool shrinked;
50+
} dep_t;
51+
bool verify_depth(dep_t*dep, int d) {
52+
if (dep->d == -1) { // first time verifying a depth
53+
dep->d = d;
5454
return true;
5555
}
5656

57-
// assert(d <= set->dep);
58-
if (d == set->dep - 1 && !set->flag) {
59-
set->flag= true;
60-
set->dep--;
57+
// assert(d <= dep->d);
58+
if (d == dep->d - 1 && !dep->shrinked) {
59+
dep->d--;
60+
dep->shrinked= true;
6161
}
6262

63-
if (d == set->dep) {
63+
if (d == dep->d) {
6464
return true;
6565
}
6666
return false;
6767
}
68-
bool traversal(struct TreeNode *node, set_t *set, int d) {
69-
if (set->dep != -1 && d > set->dep) return false;
70-
71-
if (!node->left) {
72-
if (node->right) return false;
73-
// this is a left node
74-
if (verify_and_set(set, d) == false) return false;
75-
} else if (!traversal(node->left, set, d + 1)) return false;
76-
else if (!node->right) {
77-
if (verify_and_set(set, d) == false) return false;
78-
} else if (!traversal(node->right, set, d + 1)) return false;
68+
bool traversal(struct TreeNode *node, dep_t *dep, int d) {
69+
if (!node) {
70+
if (!verify_depth(dep, d)) return false;
71+
} else {
72+
if (!traversal(node->left, dep, d + 1)) return false;
73+
if (!traversal(node->right, dep, d + 1)) return false;
74+
}
7975

8076
return true;
8177
}
8278
bool isCompleteTree(struct TreeNode* root) {
83-
set_t set = { -1, false };
84-
if (!root) return true;
85-
return traversal(root, &set, 0);
79+
dep_t dep = { -1, false };
80+
return traversal(root, &dep, 0);
8681
}
8782

8883

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /