基本数结构——二叉搜索树
来源:互联网 发布:win7无法打开网络共享 编辑:程序博客网 时间:2024/05/16 10:44
/*
一个二叉搜索树的创建 遍历 和添加!
思路:采用递归的思路创建,和普通到二叉树思路一致。
SQ 2014 -04 -19
*/
#include<stdio.h>
#include<stdlib.h>
struct Node
{
int data; // value of node
struct Node *left; // left child of node
struct Node *right; // right child of node
}Node;
link p;
p = (link)malloc(sizeof(Node));
p->left =NULL;
p->right =NULL;
p->data =10;
return p;
}
void add(link root , int data){ //插入节点也可用递归
link p;
p =(link)malloc(sizeof(Node));
p -> data = data;
p->left = p->right= NULL;
while( root->left != NULL || root->right != NULL ) {
if( (root ->left != NULL ) && (p->data < root->data))
root = root->left;
else if((root->left == NULL )&& (p->data <root->data)) break;
//如果左边为空,并且数比当前节点还小,那么就直接插入;
else if( (root ->right != NULL) && (p->data > root->data)) root = root->right;
else if((root->right ==NULL) && (p->data >root->data)) break;
} //现在root 就算新插入节点的父节点
if(p->data < root->data){
p->left = p->right =NULL;
root -> left = p;
}
if(p->data > root->data){
p->right = p->left = NULL;
root-> right = p;
}
}
show (link root){ //先序遍历 递归的思想
link p =root;
if (p->right == NULL && p->left == NULL){
printf("%d\n" , p->data);
return ;
}
else {
show(p->left);
printf("%d\n" ,p->data);
if(p->right != NULL)
show(p->right);
}
}
int main(){
link root;
root =creat();
add(root,6);
add(root,8);
add(root,4);
add(root,14);
add(root,12);
add(root,16);
show(root);
return 0;
}
一个二叉搜索树的创建 遍历 和添加!
思路:采用递归的思路创建,和普通到二叉树思路一致。
SQ 2014 -04 -19
*/
#include<stdio.h>
#include<stdlib.h>
struct Node
{
int data; // value of node
struct Node *left; // left child of node
struct Node *right; // right child of node
}Node;
typedef struct Node * link;
link creat( ){ //把第一个节点当作根节点link p;
p = (link)malloc(sizeof(Node));
p->left =NULL;
p->right =NULL;
p->data =10;
return p;
}
void add(link root , int data){ //插入节点也可用递归
link p;
p =(link)malloc(sizeof(Node));
p -> data = data;
p->left = p->right= NULL;
while( root->left != NULL || root->right != NULL ) {
if( (root ->left != NULL ) && (p->data < root->data))
root = root->left;
else if((root->left == NULL )&& (p->data <root->data)) break;
//如果左边为空,并且数比当前节点还小,那么就直接插入;
else if( (root ->right != NULL) && (p->data > root->data)) root = root->right;
else if((root->right ==NULL) && (p->data >root->data)) break;
} //现在root 就算新插入节点的父节点
if(p->data < root->data){
p->left = p->right =NULL;
root -> left = p;
}
if(p->data > root->data){
p->right = p->left = NULL;
root-> right = p;
}
}
show (link root){ //先序遍历 递归的思想
link p =root;
if (p->right == NULL && p->left == NULL){
printf("%d\n" , p->data);
return ;
}
else {
show(p->left);
printf("%d\n" ,p->data);
if(p->right != NULL)
show(p->right);
}
}
int main(){
link root;
root =creat();
add(root,6);
add(root,8);
add(root,4);
add(root,14);
add(root,12);
add(root,16);
show(root);
return 0;
}
0 0
- 基本数结构——二叉搜索树
- 数据结构—二叉搜索数
- 【二叉搜索数】HDU3791二叉搜索树
- PTA二叉搜索树——二叉搜索树的基本操作
- 二叉树基本结构
- 二叉搜索树(二叉排序数)的基本操作实现
- 二叉搜索树基本操作
- 二叉搜索树基本操作
- 数据结构基本结构:二叉树
- 二叉搜索树—平衡二叉树
- 【二叉搜索树】二叉搜索树的基本操作
- 数据结构—二叉搜索树
- 二叉搜索树-链式结构实现方式
- 用链式结构实现二叉搜索树
- 二叉搜索数
- 数据结构——排序/搜索二叉树(非递归)的基本操作实现
- 数据结构——排序/搜索二叉树(递归)的基本操作实现
- 二叉搜索树(BST)的基本操作
- 根据前序,中序构建出BinaryTree
- java笔试陷阱:累加求和中缓存机制陷阱
- 求罩
- 一个表中的Id有多个记录,把所有这个id的记录查出来,并显示共有多少条记录数,用SQL语句及视图、存储过程分别实现。
- Android OpenGL ES 光照模型
- 基本数结构——二叉搜索树
- 优化MYSQL数据库的方法
- 黑马程序员_ 黑马程序员_基础加强第二天——代理
- Domain Controller
- 根据前序,中序求后续
- Android OpenGL ES材质及光照示例
- 懒加载实例--hibernate
- opencv中阈值函数处理
- 前端开发面试题整理(JS篇)