您的位置:首页 > Web前端

剑指offer 二叉树(搜索二叉树插入,遍历)未完待续。。

2014-07-14 13:48 399 查看
搜索二叉树的插入

二叉树的遍历(前序、中序、后序、层序?)

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: