搜索二叉树的插入
二叉树的遍历(前序、中序、后序、层序?)
E:\arithmetic\BinaryTree
//BinaryTree.h
#ifndef BINARYTREE_H_H
#define BINARYTREE_H_H
#include <stdlib.h>
typedef struct BinaryTreeNode{
int value;
struct BinaryTreeNode *lChild;
struct BinaryTreeNode *rChild;
}TreeNode;
TreeNode* insertNode(TreeNode *r, int v);
void preOrder(TreeNode *r);
void inOrder(TreeNode *r);
void postOrder(TreeNode *r);
void leverOrder(TreeNode *r);
#endif
//BinaryTree.c
#include "BinaryTree.h"
TreeNode* insertNode(TreeNode *r, int v){
//TreeNode *root = *r;
if(r == NULL){
TreeNode *t = malloc(sizeof(TreeNode));
t->value = v;
t->lChild = NULL;
t->rChild = NULL;
return t;
}
if(v > r->value ){
r->rChild = insertNode(r->rChild, v);
}
else if(v < r->value ){
r->lChild = insertNode(r->lChild, v);
}
else{
printf("failed to insert! quit!\n");
return NULL;
}
return r;//!!!don't foget!!
}
void preOrder(TreeNode *r){
if(r == NULL){
return;
}
printf("%d\t", r->value);
preOrder(r->lChild);
preOrder(r->rChild);
}
void inOrder(TreeNode *r){
if(r == NULL){
return;
}
inOrder(r->lChild);
printf("%d\t", r->value);
inOrder(r->rChild);
}
void postOrder(TreeNode *r){
if(r == NULL){
return;
}
postOrder(r->lChild);
postOrder(r->rChild);
printf("%d\t", r->value);
}
void leverOrder(TreeNode *r){
}
#include <stdio.h>
#include "BinaryTree.h"
int main(int argc, char *argv[])
{
TreeNode *root = NULL;
int a[] = {10, 6, 14, 4, 8, 12, 16};
int i;
for(i=0 ; i<sizeof(a)/sizeof(int) ; i++){
root = insertNode(root, a[i]);
}
preOrder(root);
printf("\n");
inOrder(root);
printf("\n");
postOrder(root);
printf("\n");
return 0;
}