待完善

#include <stdio.h>
#include <stdlib.h>
typedef struct Tree_node
{
int val;
struct Tree_node* lef;
struct Tree_node* rig;
}Tree_node;
Tree_node* Create_node(int val) {
Tree_node* node = (Tree_node*)malloc(sizeof(Tree_node));
if (node) {
node->val = val;
node->lef = NULL;
node->rig = NULL;
}
return node;
}

void Insert(Tree_node **root,int val)
{

Tree_node * node = Create_node(val);
if(!*root)
{
*root = node;
return;
}
Tree_node * t = *root ;
while(t != NULL)
{
if(val < t->val)
{
if(t->lef == NULL)
{
t->lef = node;
return;
}
t = t->lef;
}
else
{
if(t->rig == NULL)
{
t->rig = node;
return;
}
t = t->rig;
}
}
}

//中序遍歷

void inorder(Tree_node* root) {
if (root) {
inorder(root->lef);
printf("%d ", root->val);
inorder(root->rig);
}
}
int main(void)
{

Tree_node *root = NULL;
Insert(&root, 50);
Insert(&root, 30);
Insert(&root, 20);
Insert(&root, 40);
Insert(&root, 70);
Insert(&root, 60);
Insert(&root, 80);
inorder(root);

return 0;
}

層序遍歷:

偽代碼:

while 隊列 != 空

{

  出隊列。

   if左/右節點 != 空

   入隊

  打印值 

}

前序遍歷

打印值

然后左右遍歷遞歸

中序遍歷

左遞歸

打印值

右遞歸

后序遍歷

左遍歷

右遍歷

根打印