@@ -76,6 +76,18 @@ TEST test_bst(void) {
76
76
d = binary_tree_search (root , 7 );
77
77
ASSERT_STR_EQ (* d , "d" );
78
78
79
+ binary_tree_stack_t stack = (binary_tree_stack_t ){
80
+ .stack = {NULL },
81
+ .stack_size = 0
82
+ };
83
+ binary_tree_node_t * candidate ;
84
+
85
+ candidate = binary_tree_candidate_leaf (root , 1 , & stack );
86
+ ASSERT_EQ (candidate , node1 );
87
+ ASSERT_EQ (stack .stack_size , 2 );
88
+ ASSERT_EQ (binary_tree_stack_pop (& stack )-> key , 2 );
89
+ ASSERT_EQ (binary_tree_stack_pop (& stack )-> key , 4 );
90
+
79
91
binary_tree_rotate_left (root );
80
92
/*
81
93
Now tree should be in this state:
@@ -107,6 +119,12 @@ TEST test_bst(void) {
107
119
d = binary_tree_search (root , 7 );
108
120
ASSERT_STR_EQ (* d , "d" );
109
121
122
+ candidate = binary_tree_candidate_leaf (root , 3 , & stack );
123
+ ASSERT_EQ (candidate , node3 );
124
+ ASSERT_EQ (stack .stack_size , 3 );
125
+ ASSERT_EQ (binary_tree_stack_pop (& stack )-> key , 2 );
126
+ ASSERT_EQ (binary_tree_stack_pop (& stack )-> key , 4 );
127
+ ASSERT_EQ (binary_tree_stack_pop (& stack )-> key , 6 );
110
128
111
129
binary_tree_rotate_right (root );
112
130
// Tree should be in the original state
@@ -159,6 +177,13 @@ TEST test_bst(void) {
159
177
d = binary_tree_search (root , 7 );
160
178
ASSERT_STR_EQ (* d , "d" );
161
179
180
+ candidate = binary_tree_candidate_leaf (root , 7 , & stack );
181
+ ASSERT_EQ (candidate , node7 );
182
+ ASSERT_EQ (stack .stack_size , 3 );
183
+ ASSERT_EQ (binary_tree_stack_pop (& stack )-> key , 6 );
184
+ ASSERT_EQ (binary_tree_stack_pop (& stack )-> key , 4 );
185
+ ASSERT_EQ (binary_tree_stack_pop (& stack )-> key , 2 );
186
+
162
187
PASS ();
163
188
}
164
189
0 commit comments