Skip to content

Commit

Permalink
cm
Browse files Browse the repository at this point in the history
  • Loading branch information
zhaojiedi committed Apr 17, 2022
1 parent 56da8c6 commit feb7af0
Show file tree
Hide file tree
Showing 33 changed files with 559 additions and 117 deletions.
2 changes: 1 addition & 1 deletion source/code/.idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion source/code/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ project(code C)
set(CMAKE_C_STANDARD 99)

#add_executable(code list_base.c)
add_executable(code queue_link_base.c)
add_executable(code bitree_link_base.c)
Empty file added source/code/Expired
Empty file.
179 changes: 179 additions & 0 deletions source/code/bitree_link_base.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,179 @@

#include <stdio.h>
#include <stdlib.h>
#include "stack_link_base_for_tree.c"
#include "queue_link_base_for_tree.c"


int TreeIsEmpty(BsTree bt){
if( bt == NULL){
return 1 ;
}
return 0;
}

BsTree CreateBsTree(){
BsTree bt = (BsTree)malloc(sizeof(struct TreeNode));
return bt ;
}

void PreOrderTraversalByRecursive(BsTree bt){
if (bt){
printf("%d ", bt->Data);
PreOrderTraversalByRecursive(bt->Left);
PreOrderTraversalByRecursive(bt->Right);
}
}
void InOrderTraversalByRecursive(BsTree bt){
if (bt){
InOrderTraversalByRecursive(bt->Left);
printf("%d ", bt->Data);
InOrderTraversalByRecursive(bt->Right);
}
}
void PosOrderTraversalByRecursive(BsTree bt){
if (bt){
PosOrderTraversalByRecursive(bt->Left);
PosOrderTraversalByRecursive(bt->Right);
printf("%d ", bt->Data);
}
}

void PreOrderTraversalByIterate(BsTree bt){
Stack s = CreateStack();
BsTree t = bt;
while( t || !StackIsEmpty(s)){
while(t){
printf("%d ",t->Data);
Push(s, t);
t= t->Left;
}
if (!StackIsEmpty(s)){
t= (BsTree) Pop(s);
t=t->Right;
}
}
}
void InOrderTraversalByIterate(BsTree bt){
Stack s = CreateStack();
BsTree t = bt;
while( t || !StackIsEmpty(s)){
while(t){
Push(s, t);
t= t->Left;
}
if (!StackIsEmpty(s)){
t= (BsTree) Pop(s);
printf("%d ",t->Data);
t=t->Right;
}
}
}

void PostOrderTraversalByIterate(BsTree bt){
Stack s = CreateStack();
BsTree t = bt;
BsTree prev= NULL ;
while( t || !StackIsEmpty(s)){
while(t){
Push(s, t);
t= t->Left;
}
t = (BsTree)Pop(s);
if (t->Right == NULL || t->Right == prev){
printf("%d ",t->Data);
prev = t ;
t = NULL;

}else{
Push(s,t);
t= t->Right;
}

}
}
void LevelOrderTraversal(BsTree bt){

Queue q = CreateQueue();
BsTree t = bt ;
if (bt == NULL){
return ;
}
AddQ(q,t);
while(!IsEmptyQ(q)){

t= DeleteQ(q);
printf("%d ",t->Data);
if (t->Left){
AddQ(q,t->Left);
}
if (t->Right){
AddQ(q,t->Right);
}

}

}
BsTree CreateDemoTree(){
/*
1
2 3
5 4 6
* */
BsTree bt1 = CreateBsTree();
bt1->Data = 1 ;
BsTree bt2 = CreateBsTree();
bt2->Data = 2 ;
BsTree bt3 = CreateBsTree();
bt3->Data = 3 ;
BsTree bt4 = CreateBsTree();
bt4->Data = 4 ;
BsTree bt5 = CreateBsTree();
bt5->Data = 5 ;
BsTree bt6 = CreateBsTree();
bt6->Data = 6 ;

bt1->Left = bt2 ;
bt1->Right =bt3 ;

bt2->Left = bt5 ;
bt2->Right=bt4 ;

bt3->Left = bt6 ;
return bt1 ;
}

int main(){

BsTree bt =CreateDemoTree();
printf("PreOrderTraversal\n");
PreOrderTraversalByRecursive(bt);
printf("\n");

printf("InOrderTraversalByRecursive\n");
InOrderTraversalByRecursive(bt);
printf("\n");

printf("PosOrderTraversalByRecursive\n");
PosOrderTraversalByRecursive(bt);
printf("\n");


printf("PreOrderTraversalByIterate\n");
PreOrderTraversalByIterate(bt);
printf("\n");

printf("InOrderTraversalByIterate\n");
InOrderTraversalByIterate(bt);
printf("\n");

printf("PostOrderTraversalByIterate\n");
PostOrderTraversalByIterate(bt);
printf("\n");

printf("LevelOrderTraversal\n");
LevelOrderTraversal(bt);
printf("\n");
}
11 changes: 11 additions & 0 deletions source/code/bitree_link_base.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#pragma once
#include <stdio.h>
#include <stdlib.h>

#define ElementType int
typedef struct TreeNode *BsTree ;
struct TreeNode{
ElementType Data ;
BsTree Left;
BsTree Right;
};
7 changes: 7 additions & 0 deletions source/code/bitree_list_base.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@


int main(){

}


8 changes: 4 additions & 4 deletions source/code/cmake-build-debug/CMakeCache.txt

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
set(CMAKE_C_COMPILER "/Library/Developer/CommandLineTools/usr/bin/cc")
set(CMAKE_C_COMPILER_ARG1 "")
set(CMAKE_C_COMPILER_ID "AppleClang")
set(CMAKE_C_COMPILER_VERSION "13.0.0.13000029")
set(CMAKE_C_COMPILER_VERSION "13.1.6.13160021")
set(CMAKE_C_COMPILER_VERSION_INTERNAL "")
set(CMAKE_C_COMPILER_WRAPPER "")
set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "11")
Expand Down Expand Up @@ -70,7 +70,7 @@ endif()



set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/Library/Developer/CommandLineTools/usr/lib/clang/13.0.0/include;/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/usr/include;/Library/Developer/CommandLineTools/usr/include")
set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/Library/Developer/CommandLineTools/usr/lib/clang/13.1.6/include;/Library/Developer/CommandLineTools/SDKs/MacOSX12.3.sdk/usr/include;/Library/Developer/CommandLineTools/usr/include")
set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "")
set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/usr/lib")
set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/System/Library/Frameworks")
set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/Library/Developer/CommandLineTools/SDKs/MacOSX12.3.sdk/usr/lib")
set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "/Library/Developer/CommandLineTools/SDKs/MacOSX12.3.sdk/System/Library/Frameworks")
Binary file not shown.
Binary file not shown.

0 comments on commit feb7af0

Please sign in to comment.