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

    运行示例:

  • 相关阅读:
    Proj THUDBFuzz Paper Reading: PMFuzz: Test Case Generation for Persistent Memory Programs
    入围 WF 后训练记
    算法竞赛历程
    2021 多校 杭电 第十场
    2021 多校 杭电 第九场
    2021 多校 牛客 第十场
    2021 多校 牛客 第九场
    2021 多校 杭电 第八场
    2021 多校 杭电 第六场
    2021 多校 杭电 第七场
  • 原文地址:https://www.cnblogs.com/xing901022/p/3652378.html
Copyright © 2011-2022 走看看