diff --git a/binary_tree.c b/binary_tree.c index 825c22f..b6e2a64 100644 --- a/binary_tree.c +++ b/binary_tree.c @@ -41,7 +41,8 @@ void traverse_tree(tree_node *roots) printf("error: roots is NULL\n"); return; } - while(roots) + printf("%d\n", roots->value); + while(roots ->left != NULL && roots -> right != NULL) { tree_node *temp[2] = {roots->left,roots->right}; for (int i = 0;i<2;i++) @@ -53,7 +54,17 @@ void traverse_tree(tree_node *roots) printf("%d ",temp[i]->value); } } + printf("\n"); roots = queue[front]; front = (front+1) % 3; } } +// dfs遍历 +void traverse_tree_dfs(tree_node *roots) +{ + if (roots == NULL) + return; + printf("%d\n",roots->value); + traverse_tree_dfs(roots->left); + traverse_tree_dfs(roots->right); +} \ No newline at end of file diff --git a/binary_tree.h b/binary_tree.h index 62eb1f3..b1f4e35 100644 --- a/binary_tree.h +++ b/binary_tree.h @@ -15,4 +15,5 @@ void insert_tree_node(tree_node *node,tree_node *node_new); void delete_node(tree_node *node); // 遍历树节点 void traverse_tree(tree_node *roots); +void traverse_tree_dfs(tree_node *roots); #endif // DEBUG