zoukankan      html  css  js  c++  java
  • 二叉排序树1

    二叉排序树,是一种规整的二叉树。每个节点的左子树都小于他,每个节点的右子树都大于他。

    二叉树的遍历:

    void InOrderTree(BTree *b){
        if( !b )
            return;
        InOrderTree(b->lchild);
        printf("%d ",b->data);
        InOrderTree(b->rchild);
    }

    二叉树的查找:

    int searchTree(BTree *b,int key,BTree *f,BTree *&p){
        if(!b){
            p = f;
            return 0;
        }
        else if( key == b->data){
            p = b;
            return 1;
        }
        else if(key > b->data)
            return searchTree(b->rchild,key,b,p);
        else
            return searchTree(b->lchild,key,b,p);
    }

    二叉树的插入:

    bool insertTree(BTree *b,int key){
        BTree *p,*s;
        if(!searchTree(b,key,NULL,p)){
            s = (BTree *)malloc(sizeof(BTree));
            s->data = key;
            s->lchild = s->rchild = NULL;
            if(!b){
                b = s;
            }
            else if(key < p->data){
                p->lchild = s;
            }else{ 
                p->rchild = s;
            }
            return true;
        }else
            return false;
    }

    全部代码:

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 typedef struct bTree{
     4     int data;
     5     struct bTree *lchild,*rchild;
     6 }BTree;
     7 
     8 void initialTree(BTree *b);
     9 bool insertTree(BTree *b,int key);
    10 int searchTree(BTree *b,int key,BTree *f,BTree *&p);
    11 void InOrderTree(BTree *b);
    12 
    13 int main(){
    14     BTree *b = (BTree *)malloc(sizeof(BTree));
    15     b->data = 5;
    16     b->lchild = b->rchild = NULL;
    17     initialTree(b);
    18     InOrderTree(b);
    19     getchar();
    20     return 0;
    21 }
    22 
    23 void InOrderTree(BTree *b){
    24     if( !b )
    25         return;
    26     InOrderTree(b->lchild);
    27     printf("%d ",b->data);
    28     InOrderTree(b->rchild);
    29 }
    30 
    31 void initialTree(BTree *b){
    32     insertTree(b,5);
    33     insertTree(b,3);
    34     insertTree(b,6);
    35     insertTree(b,2);
    36     insertTree(b,1);
    37     insertTree(b,8);
    38 }
    39 int searchTree(BTree *b,int key,BTree *f,BTree *&p){
    40     if(!b){
    41         p = f;
    42         printf("++%d
    ",p->data);
    43         return 0;
    44     }
    45     else if( key == b->data){
    46         p = b;
    47         printf("--%d 
    ",p->data);
    48         printf("找到元素key:%d
    ",key);
    49         return 1;
    50     }
    51     else if(key > b->data)
    52         return searchTree(b->rchild,key,b,p);
    53     else
    54         return searchTree(b->lchild,key,b,p);
    55 }
    56 bool insertTree(BTree *b,int key){
    57     BTree *p,*s;
    58     if(!searchTree(b,key,NULL,p)){
    59         printf("%d 没有出现在树中,可以插入在%d之后
    ",key,p->data);
    60         s = (BTree *)malloc(sizeof(BTree));
    61         s->data = key;
    62         s->lchild = s->rchild = NULL;
    63         if(!b){
    64             b = s;
    65         }
    66         else if(key < p->data){
    67             p->lchild = s;
    68         }else{ 
    69             p->rchild = s;
    70         }
    71         return true;
    72     }else
    73         return false;
    74 }
    View Code

    运行示例:

  • 相关阅读:
    Spark算子--join
    Spark算子--filter
    Spark算子--reduceByKey
    Spark算子--mapPartitions和mapPartitionsWithIndex
    Spark算子--map和flatMap
    Flume环境搭建_五种案例
    枚举深入剖析
    Oracle_基本函数查询综合
    Oracle_复杂查询综合
    softmax 杂谈
  • 原文地址:https://www.cnblogs.com/xing901022/p/3652378.html
Copyright © 2011-2022 走看看